我希望将星星(代码中的硬币)在汽车撞到星星时移动到屏幕的正右上角。在每次更新期间,星星和道路以恒定速度向下移动。汽车不会移动,但由于道路向下移动而看起来向上移动。尽管可以根据用户的指令左右移动车道。
因此,我使用以下方法计算了星星与屏幕右上角之间的角度。
在我的Update方法中,以下代码计算移动速度并将其发送到屏幕右上角。
在我的“Draw”方法中,我使用以下代码更新了“coin.Position”。
问题是星星(金币)没有被发送到我想要的右上角,而是在右侧屏幕边界的中间某个位置。
当星星在右车道被击中时,它与右上角之间的角度始终相同。
我是否正确计算了角度?我可能忘记考虑星星的向下运动了吗?
编辑:我已更新图像以显示我正在尝试计算的角度,并编辑了我的问题以使其更清晰。
编辑2:添加了第二张图片,展示了星星被击中后的去处。
因此,我使用以下方法计算了星星与屏幕右上角之间的角度。
public double AngleBetween(Vector2 a, Vector2 b)
{
return Math.Atan2(b.Y - a.Y, b.X - a.X);
}
在我的Update方法中,以下代码计算移动速度并将其发送到屏幕右上角。
double angleBetween = coin.AngleBetween(coin.Position, new
Vector2(currentGame.GraphicsDevice.Viewport.Bounds.Right, 0));
collidedCoinVelocity = new Vector2((float)Math.Sin(angleBetween),
-(float)Math.Cos(angleBetween));
在我的“Draw”方法中,我使用以下代码更新了“coin.Position”。
coin.Position += collidedCoinVelocity * 10 ;
问题是星星(金币)没有被发送到我想要的右上角,而是在右侧屏幕边界的中间某个位置。
当星星在右车道被击中时,它与右上角之间的角度始终相同。
1.2196048576751 radians = 69.878211 degree
当星星在左车道时,角度为
0.952588487628243 radians = 54.5793 degree
我是否正确计算了角度?我可能忘记考虑星星的向下运动了吗?
编辑:我已更新图像以显示我正在尝试计算的角度,并编辑了我的问题以使其更清晰。
编辑2:添加了第二张图片,展示了星星被击中后的去处。