暂时禁用刚体重力 C#
Disable RigidBody Gravity Temporarily C#
首先,我想道歉,因为我知道这将是一个非常基本的要求,但我对这个世界还很陌生。
我只想在一段时间内禁用刚体的重力元素,然后再启用它直到游戏重置。如果我理解我在 google 上找到的内容,我需要使用协程,但我在这样做时遇到了问题。
我最初尝试将我的重力元素设置为 false,并在这么长时间后使用 Wait For Seconds 语句将重力设置为 true,但这给我带来了错误。
如有任何帮助,我们将不胜感激。
[SerializeField] private Rigidbody rb = null;
private Coroutine disbaledGravity = null;
public void DisableGravity(float timeToDisable)
{
rb.useGravity = false;
if(disabledGravity != null)
StopCoroutine(disabledGravity);
disableGravity = StartCoroutine(EnableGravityAfterDelay(timeToDisable));
}
private IEnumerator EnableGravityAfterDelay(float delay)
{
yield return new WaitForSeconds(delay);
rb.useGravity = true;
disableGravity = null;
}
抱歉,如果有拼写错误 - 在移动设备上。一般的想法是在一段时间内调用 public 函数,此时重力应该被禁用。如果已发生禁用重力事件,则会将其清除并替换为新事件。在禁用重力调用后持续时间过去后,将为对象重新启用重力。一旦关闭移动设备,我将添加一些资源链接以帮助理解所使用的功能。
Rigidbody.useGravity 布尔值正是您要找的。
首先,获取对要禁用其重力的刚体的引用。例如通过 GetComponent
:
private Rigidbody myRb;
public void Start()
{
myRb = GetComponent<Rigidbody>();
}
接下来,创建一个简单的 coroutine:
public IEnumerator GravityDisableRoutine()
{
myRb.useGravity = false;
yield return new WaitForSeconds(10); //You may change this number of seconds
myRb.useGravity = true;
}
现在,只要您想禁用重力,请调用:
StartCoroutine(GravityDisableRoutine());
首先,我想道歉,因为我知道这将是一个非常基本的要求,但我对这个世界还很陌生。
我只想在一段时间内禁用刚体的重力元素,然后再启用它直到游戏重置。如果我理解我在 google 上找到的内容,我需要使用协程,但我在这样做时遇到了问题。
我最初尝试将我的重力元素设置为 false,并在这么长时间后使用 Wait For Seconds 语句将重力设置为 true,但这给我带来了错误。
如有任何帮助,我们将不胜感激。
[SerializeField] private Rigidbody rb = null;
private Coroutine disbaledGravity = null;
public void DisableGravity(float timeToDisable)
{
rb.useGravity = false;
if(disabledGravity != null)
StopCoroutine(disabledGravity);
disableGravity = StartCoroutine(EnableGravityAfterDelay(timeToDisable));
}
private IEnumerator EnableGravityAfterDelay(float delay)
{
yield return new WaitForSeconds(delay);
rb.useGravity = true;
disableGravity = null;
}
抱歉,如果有拼写错误 - 在移动设备上。一般的想法是在一段时间内调用 public 函数,此时重力应该被禁用。如果已发生禁用重力事件,则会将其清除并替换为新事件。在禁用重力调用后持续时间过去后,将为对象重新启用重力。一旦关闭移动设备,我将添加一些资源链接以帮助理解所使用的功能。
Rigidbody.useGravity 布尔值正是您要找的。
首先,获取对要禁用其重力的刚体的引用。例如通过 GetComponent
:
private Rigidbody myRb;
public void Start()
{
myRb = GetComponent<Rigidbody>();
}
接下来,创建一个简单的 coroutine:
public IEnumerator GravityDisableRoutine()
{
myRb.useGravity = false;
yield return new WaitForSeconds(10); //You may change this number of seconds
myRb.useGravity = true;
}
现在,只要您想禁用重力,请调用:
StartCoroutine(GravityDisableRoutine());