C# 我想在unity3d c中按一个键时冻结一个对象#
所以我想做的是,当一个玩家按下一个键,这个物体会以某种方式删除刚体,或者只是冻结它。我看了文件,但不知道该找什么C# 我想在unity3d c中按一个键时冻结一个对象#,c#,unity3d,C#,Unity3d,所以我想做的是,当一个玩家按下一个键,这个物体会以某种方式删除刚体,或者只是冻结它。我看了文件,但不知道该找什么 if (Input.GetKeyDown(KeyCode.F)) { } 我还希望玩家能够在冻结后解冻。(或在删除刚体时恢复该刚体)您应该能够简单地将刚体组件上的“enabled”设置为false 类似于此,请注意,将刚体缓存在Awake()上或任何适合您的上下文的东西上可能是有意义的 if (Input.GetKeyDown(KeyCode.F)) { gameObje
if (Input.GetKeyDown(KeyCode.F))
{
}
我还希望玩家能够在冻结后解冻。(或在删除刚体时恢复该刚体)您应该能够简单地将刚体组件上的“enabled”设置为false 类似于此,请注意,将刚体缓存在Awake()上或任何适合您的上下文的东西上可能是有意义的
if (Input.GetKeyDown(KeyCode.F))
{
gameObject.GetComponent<Rigidbody>().enabled = false;
}
if(Input.GetKeyDown(KeyCode.F))
{
gameObject.GetComponent().enabled=false;
}
如前所述,你要做的是冻结刚体,如
private Rigidbody _rigidbody;
private float velocity;
private void Awake ()
{
_rigidbody = GetComponemt<Rigidbody>();
}
private bool isFrozen;
private void Update()
{
if (Input.GetKeyDown(KeyCode.F))
{
isFrozen = !isFrozen;
if(isFrozen) velocity = _rigidbody.velocity;
_rigidbody.velocity = isFrozen ? Vector3.zero : velocity;
_rigidbody.isKinematic = isFrozen;
}
}
私有刚体_刚体;
私人浮动速度;
私人空间()
{
_刚体=GetComponemt();
}
私人住宅被冻结;
私有void更新()
{
if(Input.GetKeyDown(KeyCode.F))
{
isfreezed=!isfreezed;
如果(Is冻结)速度=_rigidbody.velocity;
_rigidbody.velocity=IsFrozed?Vector3.zero:速度;
_rigidbody.IsKinetic=IsFrozed;
}
}
当你想让它再次对物理做出反应时,禁用
iskinetic
并重新分配速度
你能定义“冻结”吗?就像当玩家按下按钮时,所有轴都停止变化。旋转停止,运动停止和诸如此类的事情,你可以把它看作是物体的状态,它阻止了所有的位置操作。另外,如果它能在以后恢复,以便能够四处移动,那也很好。物体是如何移动的?如果它是一个刚体,你可以设置iskinetic
,或者简单地将速度设置为0
。如果你用一些输入移动它。。那么,在冻结时忽略所有输入。。如果你想冻结所有你可以使用的Time.timeScale=0
,但这有一些副作用,因此完全取决于进一步的信息……它说刚体没有“启用”的定义。我应该把什么放在那里,或者我应该用其他方式添加它?对不起,我的错,在这种情况下,请参考德胡戈的回复。