基本上,我正在尝试制作一个基于地面被击中时自动跳跃的游戏(我正在使用的控制器是预制的一个可以导入。)为了做到这一点,我从控制器脚本中删除了跳转功能,并添加了一个名为“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()”触发器,一旦你击中地面就会跳跃。 然而,即使我在空中看起来像这样,我也会得到快速跳跃:
答案 0 :(得分:1)
首先,撤消您对RigidbodyFirstPersonController
脚本执行的所有修改。如果可能,请将其删除并从Unity重新导入一个干净的文件。
选择你的RigidBodyFPSController
GameObject,在编辑器中查看附加到它的RigidbodyFirstPersonController
脚本。在它下面有一个名为高级设置的设置。在高级设置下,有一个名为 Shell Offset 的变量。将 Shell Offset 从其默认值0
更改为0.5
。再玩一次,这个问题就应该消失了。如果那不起作用,那就更多了。这应该可以解决你的问题。
答案 1 :(得分:0)
由于重力正在影响它,你不在空中。无论何时退出碰撞,你的y轴向上速度都不起作用,重力向下发生。
如果您不想使用重力,请在FPSController的gravity
组件中禁用Rigidbody
。