unity rigidbody2d倾斜问题
Unity rigidbody2d tilt issue
我是新手,正在尝试学习如何使用 C# 和 unity。当你在 x 轴上来回移动时,我目前正在尝试倾斜我的船。但是我收到编译器错误但看不到它?任何帮助将不胜感激:)
错误是这样的:
Assets/Scripts/PlayerController.cs(28,62): error CS0029: Cannot implicitly convert type 'UnityEngine.Quaternion' to 'float'
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);
}
}
您使用的教程可能使用 Rigidbody
(3D),而您使用的是 Rigidbody2D
.
Rigidbody2D.rotation
是绕 Z 轴 float
旋转。
Rigidbody.rotation
是 Quaternion
3d 旋转。您的代码创建了一个 Quaternion
,它可以与 Rigidbody
一起使用,但您有一个 Rigidbody2D
.
有两种方法可以修复错误:
使用二维旋转,跳过 Quaternion
:
的创建
var rigidbody2D = GetComponent<Rigidbody2D>();
rigidbody2D.rotation = rigidbody2D.velocity.x * -tilt;
更改您的代码和 Unity 对象以使用 Rigidbody
。
我是新手,正在尝试学习如何使用 C# 和 unity。当你在 x 轴上来回移动时,我目前正在尝试倾斜我的船。但是我收到编译器错误但看不到它?任何帮助将不胜感激:)
错误是这样的:
Assets/Scripts/PlayerController.cs(28,62): error CS0029: Cannot implicitly convert type 'UnityEngine.Quaternion' to 'float'
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);
}
}
您使用的教程可能使用 Rigidbody
(3D),而您使用的是 Rigidbody2D
.
Rigidbody2D.rotation
是绕 Z 轴 float
旋转。
Rigidbody.rotation
是 Quaternion
3d 旋转。您的代码创建了一个 Quaternion
,它可以与 Rigidbody
一起使用,但您有一个 Rigidbody2D
.
有两种方法可以修复错误:
使用二维旋转,跳过
的创建Quaternion
:var rigidbody2D = GetComponent<Rigidbody2D>(); rigidbody2D.rotation = rigidbody2D.velocity.x * -tilt;
更改您的代码和 Unity 对象以使用
Rigidbody
。