使用虚拟操纵杆移动和旋转二维对象
Move and rotate 2d object using virtual joystick
这是我使用内置虚拟操纵杆移动 2D 自上而下对象的代码:
void Update ()
{
Vector2 moveVec = new Vector2(CrossPlatformInputManager.GetAxis("Horizontal"),
CrossPlatformInputManager.GetAxis("Vertical"));
Vector3 lookVec = new Vector3(CrossPlatformInputManager.GetAxis("Horizontal"),
CrossPlatformInputManager.GetAxis("Vertical"), 4000);
transform.rotation = Quaternion.LookRotation(lookVec, Vector3.back);
transform.Translate(moveVec * Time.deltaTime * speed);
}
没有旋转代码,运动是完美的,加入旋转代码后,运动变得一团糟,如果方向是向下,它会向上移动。
但轮换正是它应该的方式。
只需将 transform.Translate(moveVec * Time.deltaTime * speed);
行更改为 transform.Translate(moveVec * Time.deltaTime * speed, Space.World);
:默认情况下,翻译相对于转换本身 space (Space.Self).
这是我使用内置虚拟操纵杆移动 2D 自上而下对象的代码:
void Update ()
{
Vector2 moveVec = new Vector2(CrossPlatformInputManager.GetAxis("Horizontal"),
CrossPlatformInputManager.GetAxis("Vertical"));
Vector3 lookVec = new Vector3(CrossPlatformInputManager.GetAxis("Horizontal"),
CrossPlatformInputManager.GetAxis("Vertical"), 4000);
transform.rotation = Quaternion.LookRotation(lookVec, Vector3.back);
transform.Translate(moveVec * Time.deltaTime * speed);
}
没有旋转代码,运动是完美的,加入旋转代码后,运动变得一团糟,如果方向是向下,它会向上移动。 但轮换正是它应该的方式。
只需将 transform.Translate(moveVec * Time.deltaTime * speed);
行更改为 transform.Translate(moveVec * Time.deltaTime * speed, Space.World);
:默认情况下,翻译相对于转换本身 space (Space.Self).