Unity rigidbody2d倾斜问题

时间:2015-11-20 22:00:43

标签: c# unity3d unity5

我是新手,并试图学习如何使用C#和统一。我正在尝试在x轴上来回移动时倾斜我的船。但是我收到编译器错误但看不到它?任何帮助将不胜感激:))

错误是这样的:

  

Assets / Scripts / PlayerController.cs(28,62):错误CS0029:无法隐式转换类型' UnityEngine.Quaternion'到'浮动'

using UnityEngine;
using System.Collections;

[System.Serializable]
public class Boundary {
    public float xMin, xMax, yMin, yMax;
}

public class PlayerController : MonoBehaviour {

    public float speed;
    public float tilt;
    public Boundary boundary;

    void FixedUpdate () {
        float moveHorizontal = Input.GetAxis ("Horizontal");
        float moveVertical = Input.GetAxis ("Vertical");

        Vector2 movement = new Vector2 (moveHorizontal, moveVertical);
        this.gameObject.GetComponent<Rigidbody2D> ().velocity = movement * speed;

        this.gameObject.GetComponent<Rigidbody2D> ().position = new Vector2 
            (
                Mathf.Clamp (this.gameObject.GetComponent<Rigidbody2D> ().position.x, boundary.xMin, boundary.xMax),
                Mathf.Clamp (this.gameObject.GetComponent<Rigidbody2D> ().position.y, boundary.yMin, boundary.yMax)
            );

        //issue is on this line
        this.gameObject.GetComponent<Rigidbody2D> ().rotation = Quaternion.Euler (0.0f, this.gameObject.GetComponent<Rigidbody2D> ().velocity.x * -tilt, 0.0f);
    }
}

1 个答案:

答案 0 :(得分:2)

您正在使用的教程可能会使用Rigidbody(3D),而您正在使用Rigidbody2D

Rigidbody2D.rotation围绕Z轴旋转float

Rigidbody.rotationQuaternion三维旋转。您的代码会创建一个Quaternion,它可以与Rigidbody一起使用,但您有一个Rigidbody2D

有两种方法可以解决错误:

  1. 使用2d轮换,跳过Quaternion

    的创建
    var rigidbody2D = GetComponent<Rigidbody2D>();
    rigidbody2D.rotation = rigidbody2D.velocity.x * -tilt;
    
  2. 更改您的代码和Unity对象以使用Rigidbody