Навигация
· XNA FAQ
· С чего начать
· Конкурсы
· Обратная связь
· XNA Блоги
Сейчас на сайте
· Гостей: 1

· Пользователей: 0

· Всего пользователей: 3,684
· Новый пользователь: headron
Последние фото
Эх, чуть не проспал закрытие.
Эх, чуть не проспал ...
Альбом: XNA Engine

GB
GB
Альбом: XNA Engine

South Park Coon & Friends
South Park Coon & Fr...
Альбом: XNA Games

Блоги
yavshoke
» XboxOne - интерес...
dampirik
» Push уведомления ...
dampirik
» Реклама,статистик...
Chort
» XNA и StartCoroutine
Chort
» Curve Class
dampirik
» Реклама, статисти...
dampirik
» Увеличение скорос...
dampirik
» Реклама, статисти...
general
» Распаковка DxtCom...
general
» Как работать с XN...
Поддержка
microsoft.com
1gb.ru - Дом для вашего сайта
Статистика посещений:

Просмотр темы
 Распечатать тему
Преобразование координат
Knuth
#1 Распечатать сообщение
Опубликовано 21.06.2014 03:49:09
Новичок


Сообщений: 5
Зарегистрирован: 21.06.14

Всем здравствуйте!

Решил подтянуть немного математику и физику применив ее в разработке игр и для этого выбрал платформу XNA так как давно пишу на языке C# и вообще без ума от платформы .NET.
Первое что я решил сделать это нарисовать квадрат (картинка) и попробовать мышью перетаскивать его по экрану, с этим проблем не было, но появилось проблема в следующем когда я добавил 2D камеру.
Изменив положение камеры я как бы так выразиться потерял контроль над объектом который я нарисовал из за того что его положение осталось на прошлых координатах а камера сдвинулась и теперь текущие координаты мыши X, Y не совпадают с позицией объекта.
Как я вычитал и понял мне нужно сделать преобразование экранных координат в мировые и позиционировать объекты на преобразованных координатах?
Вообщем, объясните пожалуйста как к такой задачи правильно подойти. Первое что я хочу сделать это нарисовать 2D объект и иметь возможно мышкой передвигать его, то есть проще говоря нужно понимание как трансформировать координаты, как находить объект в мире и т.д. и т.п.
За ранее благодарен за любые подсказки.
Изменил(а) Knuth, 21.06.2014 05:12:54
 
Knuth
#2 Распечатать сообщение
Опубликовано 21.06.2014 13:50:10
Новичок


Сообщений: 5
Зарегистрирован: 21.06.14

Разобрался сам, если кому интересно вот решение.
Метод GetWorldCoordinates возвращает мировые координаты преобразованные из экранных.

Загрузить источник  GeSHi: C#
  1. namespace TestPhysics.Camera
  2. {
  3. public class Camera2D
  4. {
  5. private float zoom;
  6. private Matrix transform;
  7. private Vector2 position;
  8.  
  9. public Camera2D()
  10. {
  11. zoom = 1.0f;
  12. Rotation = 0.0f;
  13. position = Vector2.Zero;
  14. }
  15.  
  16. public float Zoom
  17. {
  18. get
  19. {
  20. return zoom;
  21. }
  22. set
  23. {
  24. zoom = value;
  25.  
  26. if (zoom < 0.1f)
  27. {
  28. zoom = 0.1f;
  29. }
  30. }
  31. }
  32.  
  33. public float Rotation
  34. {
  35. get;
  36. set;
  37. }
  38.  
  39. public Vector2 Position
  40. {
  41. get
  42. {
  43. return position;
  44. }
  45. set
  46. {
  47. position = value;
  48. }
  49. }
  50.  
  51. public void Move(Vector2 amount)
  52. {
  53. position += amount;
  54. }
  55.  
  56. public Vector2 ScreenToWorld(GraphicsDevice device, Vector2 mousePosition)
  57. {
  58. return Vector2.Transform(mousePosition, Matrix.Invert(GetTransformation(device)));
  59. }
  60.  
  61. public Matrix GetTransformation(GraphicsDevice device)
  62. {
  63. transform = Matrix.CreateTranslation(new Vector3(-position.X, -position.Y, 0))
  64. * Matrix.CreateRotationZ(Rotation) * Matrix.CreateScale(new Vector3(Zoom, Zoom, 1))
  65. * Matrix.CreateTranslation(new Vector3(device.Viewport.Width * 0.5f, device.Viewport.Height * 0.5f, 0));
  66. return transform;
  67. }
  68. }
  69. }
Добавлено за 0.010 секунд, используя GeSHi 1.0.8.2

Изменил(а) Knuth, 21.06.2014 17:50:19
 
Перейти на форум:
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

27.08.2014
Я умею немного на asp.net + html и css

22.08.2014
на ASP mvc 3 есть пару проектов. Могу помочь, если нужно. Обидно, если закроется Frown

21.08.2014
я тоже ноль

21.08.2014
Я в вебе только с php занимался да и то на уровне чтоб работало.

21.08.2014
Я в вебе полный ноль…

21.08.2014
Переводить его надо, хоть на ту же азуру. И двиг менять на что-то современное. Если есть веб-разрабы - можем скооперироваться. Один делать не буду.

21.08.2014
не знаю всех нюансов по оплате и все хорошее когда нибудь заканчивается

21.08.2014
А что случилось?

21.08.2014
похоже сайт будет работать до 28го числа

09.08.2014
Апи пока не видел. Но есть приложение в магазине Live Lock Screen BETA, так что думаю скоро будет

08.08.2014
Я про API для Update1. На нем работает это

08.08.2014
А что именно нужно? Чтото и сейчас открыто http://msdn.micro.
...105).aspx

06.08.2014
Кто-нибудь слышал об открытии доступа к Lock Screen Api?

31.07.2014
VPDExpress на базе MVS 2012, ни в какую не ловит исключения. Даже если их сам создаешь. И всех так?

25.07.2014
С днем системного администратора причастных к этой профессии! По случаю - тортик от жены

RSS каналы сайта
XNA - Новости
XNA - Статьи
XNA - Форум
XNA - Галерея
XNA - Файлы
Время загрузки: 0,33 секунд 8,710,431 уникальных посетителей