Показать сообщение отдельно
Старый 25.06.2012, 03:35   #101
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Вопросы по XNA.

Сообщение от Nikich Посмотреть сообщение
Зачем так делать? Можно сразу тогда сразу изменять координаты pos на какое-то число. То есть нажата стрелка вверх - уменьшать Y и так далее.
Мне нужно векторное перемещение для того, чтобы не было бага с двойной скорости, когда нажимаешь сразу клавишу вверх и вбок. Знаю как можно это исправить без векторов( Cos45*speed), но это не торт, когда вектора есть.
Float spd = 3f;  // Это скорость перемещения.
Vector Speed = Vector2.Zero;   //вектор направления движения.
bool isMoved=false;

if нажато вверх {    Speed+= new Vector2(0,-1); isMoved=true;}
if нажато вниз {    Speed+= new Vector2(0,1); isMoved=true;}
if нажато влево {    Speed+= new Vector2(-1,0); isMoved=true;}
if нажато вправо {    Speed+= new Vector2(1,0); isMoved=true;}

if (isMoved)
{
    Speed.Normalize();   //X и Y изменяются, так что длина вектора стает равной 1
    Speed*=spd;
    pos+=Speed;
}
Что-то типа такого можешь сделать.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (25.06.2012)