好-我是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");
}
}
}
答案 0 :(得分:1)
如果要使刚体停下来然后掉下来,可以使用rbgo.useGravity = false/true
。
不过,还有其他方法,您可以使用RigidbodyConstraints进行操作,使刚体在Y轴上冻结,然后删除此约束。
如果要在刚体移动后完全停止它,可以执行rbgo.constraints = RigidbodyConstraints.FreezeAll
或rbgo.velocity = Vector3.zero
(然后,如果要禁用重力,则执行rbgo.useGravity = false
。
如果您不想处理刚体本身,也可以使用transform.position
和/或transform.Translate
。