Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我想在unity3d c中按一个键时冻结一个对象#_C#_Unity3d - Fatal编程技术网

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
,但这有一些副作用,因此完全取决于进一步的信息……它说刚体没有“启用”的定义。我应该把什么放在那里,或者我应该用其他方式添加它?对不起,我的错,在这种情况下,请参考德胡戈的回复。