Как реализовать векторы (вектор-математика)? - PullRequest
0 голосов
/ 16 октября 2011

В настоящее время я делаю игру с прорывом, и для определения местоположения или движения объектов я использую:

float mX, mY;
float speedX, speedY;   

И чтобы переместить объект, я добавляю скорость в определенном направлении к текущей позиции (mX + = speedX).

Но я много читал о том, что я «должен» использовать векторы вместо вышеупомянутого, что я сейчас планирую сделать. Я читал об этой векторной математике, но я не знаю, как мне это реализовать в моей игре. Есть много информации о самой математике, но я не мог найти что-либо на стороне кода. Я мог бы придумать:

float mX, mY;
float direction;
float velocity;  

Но здесь я застрял. Я знаю, что я должен переместить объект на direction с velocity, вероятно, с фактором времени, но как?

(кстати, я делаю это с openGL-ES на Android)

1 Ответ

3 голосов
/ 16 октября 2011

Вектор в 2D имеет два измерения: (vx, vy). Это все, что вам нужно.

Вы можете найти направление, рассчитав так называемый «единичный вектор»: вектор величиной 1, который указывает направление, в котором вы движетесь.

Вы рассчитываете величину, используя эту формулу: magnitude = sqrt(vx*vx + vy*vy)

Вы получите единичный вектор, разделив оба компонента на величину:

(ux, uy) = (vx/magnitude, vy/magnitude)

Если вы движетесь с постоянной скоростью в течение шага по времени dt, то расстояние, в котором вы двигаетесь в каждом направлении:

(dx, dy) = (vx*dt, vy*dt)

Это не предполагает ускорения в течение этого периода времени.

Это все базовые векторные вещи. Небольшое чтение может иметь большое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...