我正在检查参照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

10-07 12:51