Jump OnCollision() 脚本不工作
Jump OnCollision() Script not working
基本上,我正在尝试制作一款基于触地后自动跳跃的游戏(我正在使用的控制器是可以导入的预制)。为了做到这一点,我从控制器脚本中删除了跳转功能,并添加了一个名为"Cube"的脚本,内容如下:
using UnityEngine;
using System.Collections;
public class Cube : MonoBehaviour {
void OnCollisionStay (Collision col)
{
if (col.gameObject.name == "Blue") {
Rigidbody rig;
rig= GetComponent<Rigidbody> ();
rig.velocity = new Vector3 (0, 8, 0);
print ("collison detected");
}
}
}
在这样做之后,由于 "OnCollisionStay()" 触发器,我期待一个可控的角色,它会在您触地时立即跳跃。 然而,即使我在空中,我也会快速跳跃,看起来像这样:
你不在空中,因为重力正在影响它。每当您退出碰撞时,您的 y 轴向上速度不起作用并且重力向下发生。
如果您不想使用重力,请在 FPSController 的 Rigidbody
组件中禁用 gravity
。
首先,撤消 您对 RigidbodyFirstPersonController
脚本所做的所有修改。如果可能,删除它并从 Unity 重新导入一个干净的。
Select 你的 RigidBodyFPSController
GameObject,在编辑器中查看附加到它的 RigidbodyFirstPersonController
脚本。在它下面有一个名为 Advanced Settings 的设置。在高级设置下,有一个名为Shell偏移的变量。将 Shell 偏移量 从其默认值 0
更改为 0.5
。再玩一次,这个问题应该就没有了。如果那不起作用,请将其增加。这应该可以解决您的问题。
基本上,我正在尝试制作一款基于触地后自动跳跃的游戏(我正在使用的控制器是可以导入的预制)。为了做到这一点,我从控制器脚本中删除了跳转功能,并添加了一个名为"Cube"的脚本,内容如下:
using UnityEngine;
using System.Collections;
public class Cube : MonoBehaviour {
void OnCollisionStay (Collision col)
{
if (col.gameObject.name == "Blue") {
Rigidbody rig;
rig= GetComponent<Rigidbody> ();
rig.velocity = new Vector3 (0, 8, 0);
print ("collison detected");
}
}
}
在这样做之后,由于 "OnCollisionStay()" 触发器,我期待一个可控的角色,它会在您触地时立即跳跃。 然而,即使我在空中,我也会快速跳跃,看起来像这样:
你不在空中,因为重力正在影响它。每当您退出碰撞时,您的 y 轴向上速度不起作用并且重力向下发生。
如果您不想使用重力,请在 FPSController 的 Rigidbody
组件中禁用 gravity
。
首先,撤消 您对 RigidbodyFirstPersonController
脚本所做的所有修改。如果可能,删除它并从 Unity 重新导入一个干净的。
Select 你的 RigidBodyFPSController
GameObject,在编辑器中查看附加到它的 RigidbodyFirstPersonController
脚本。在它下面有一个名为 Advanced Settings 的设置。在高级设置下,有一个名为Shell偏移的变量。将 Shell 偏移量 从其默认值 0
更改为 0.5
。再玩一次,这个问题应该就没有了。如果那不起作用,请将其增加。这应该可以解决您的问题。