出于学习目的,我正在尝试制作“太空射击”型游戏。我在使用Rigidbody2D移动飞船时遇到了麻烦。
我已经尝试过在Update(),FixedUpdate()中运行命令并仅使用Rigidbody2D组件(完全不使用Transform)。我还尝试将Rigidbody2D标记为Dynamic和Kinematic,并更改了Simulated属性。什么都没用。
这是我当前(无效)的代码:
Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.Q))
rb.MoveRotation(angularSpeed * Time.deltaTime);
if (Input.GetKey(KeyCode.E))
rb.MoveRotation(-angularSpeed * Time.deltaTime);
rb.MovePosition(Vector2.up * speed * Time.deltaTime);
}
我希望该代码使按“ Q”键时飞船向左转,按“ E”键时始终向右转。实际结果是,当按下键“ Q”或“ E”时,飞船不会移动,而不会仅旋转抖动(它向右或向左旋转一步,然后不再响应输入)。该代码不会生成任何错误消息或警告,也不会引发任何异常。
答案 0 :(得分:1)
Rigidbody2D.MovePosition
和Rigidbody2D.MoveRotation
都期望您希望它们移动到的最终旋转位置的绝对参数。
对于 axios.get(`/data/teasers/${path}`)
,您做的正确,但对于MovePosition
,您仅传入了相对旋转更改,但忘记将其添加到当前旋转中。
应该是
MoveRotation