Я занимаюсь простой прорывной игрой, и у меня есть некоторая проблема, чтобы понять, как я должен обрабатывать скорость и направление мяча, чтобы переместить его по разным диагональным дорожкам. Я использую этот код в методе обновления:Направление движущегося спрайта
xPos += xSpeed * direction;
yPos += ySpeed * direction;
Если я использую различный Воулс из xSpeed = 2
и YSpeed = 1
я могу изменить для различных диагональных путей, но я все равно хочу с той же скоростью. Если я увеличу значение xSpeed = 4
, чтобы получить еще один диагональный путь, тогда скорость также увеличивается, и я хочу, чтобы мяч двигался с той же скоростью. Для значения direction
я использую 1 или -1. Но я думаю, было бы лучше изменить значение direction
, чтобы получить диагональные пути в градусах? В прорывной игре мяч должен оправиться в противоположном направлении. Я плохо разбираюсь в математике, поэтому я бы попытался помочь в решении этой проблемы. Любые идеи, как я могу улучшить свой код?
Является ли движение угол в радианах или градусах? –
@ 3D-креатив - в случае 'Math.sin()' это радианы. [См. Документ] (http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html#sin (double)). – kamituel
Я думаю, что это работает, я использую этот код: double angle = Math.toRadians (180); xPos + = скорость * Math.sin (угол); yPos + = скорость * Math.cos (угол); Я просто немного смущен, 180 градусов вверх, я думал, что 90 градусов поднялись !? Использую ли я один и тот же переменный угол как в sin, так и в cos? –