Unity中的觉醒刚体

时间:2019-04-06 03:54:03

标签: c# unity3d

好-我是Unity的超级新手(只是为了好玩而已),并且希望当玩家在Z轴上到达15之内时让一个敌方立方体掉落。我可以让该敌方立方体的刚体功能“沉睡”但是当我到达15岁以下时,它不会醒来并开始下降。您能帮我提供我的代码吗? Debug.Log告诉我在运行时我想要什么,但是刚体并未在敌方立方体上重新激活。抱歉,如果这是一个非常简单的请求...只是想学习!

     using UnityEngine;

public class activatefall : MonoBehaviour
{
    public Transform Player;
    public Rigidbody rbgo;
    private float coolnumber;
    private float badtogood;

    // Update is called once per frame
    void FixedUpdate()
    {
        coolnumber = transform.position.z;
        badtogood = coolnumber - Player.position.z;
        Debug.Log(badtogood);

        if (badtogood < 15f)
        {
            rbgo.WakeUp();
            Debug.Log("Falling!");
        }
        else
        {
            rbgo.Sleep();
            Debug.Log("Frozen");
        }

    }
}

1 个答案:

答案 0 :(得分:1)

如果要使刚体停下来然后掉下来,可以使用rbgo.useGravity = false/true

不过,还有其他方法,您可以使用RigidbodyConstraints进行操作,使刚体在Y轴上冻结,然后删除此约束。

如果要在刚体移动后完全停止它,可以执行rbgo.constraints = RigidbodyConstraints.FreezeAllrbgo.velocity = Vector3.zero(然后,如果要禁用重力,则执行rbgo.useGravity = false

如果您不想处理刚体本身,也可以使用transform.position和/或transform.Translate