我正在检查参照3D刚体的地面,并查看其下方的小盒子是否与地面对象的任何盒子碰撞器发生碰撞。脚本看到的唯一问题是最后一个框的旋转无法用浮点值表示,因为Unity表示无法将浮点转换为UnityEngine.Quaternion。
[Range(1, 10)]
public float JumpVelocity;
public float groundedSkin = 0.05f;
public LayerMask mask;
bool jumpRequest;
bool grounded;
Vector3 playerSize;
Vector3 boxSize;
void Awake()
{
playerSize = GetComponent<BoxCollider>().size;
boxSize = new Vector3(playerSize.x, groundedSkin);
}
void Update()
{
if (Input.GetButtonDown("Jump") && grounded)
{
jumpRequest = true;
}
}
void FixedUpdate()
{
if (jumpRequest)
{
GetComponent<Rigidbody>().AddForce(Vector3.up * JumpVelocity,
ForceMode.Impulse);
jumpRequest = false;
grounded = false;
}
else
{
Vector3 boxCenter = (Vector3)transform.position + Vector3.down *
(playerSize.y + boxSize.y) * 0.5f;
grounded = (Physics.OverlapBox (boxCenter,boxSize, 0f,mask) !=
null);
}
}
}
我知道发送这样的整个代码块并不是一件很优雅的事情,但是我根本不明白为什么不能将“ 0f”值建立为盒子的一种旋转形式。其他所有内容均应正确引用。
让我知道我是否很蠢。感谢您的所有帮助!
最佳答案
四元数不是由单个浮点值定义的。旋转等值非零或等价。
只需将0f
替换为Quaternion.identity
。