2016-07-24 119 views
0

基本上,我试图做一个游戏,基于自动跳跃一旦地面被击中我使用的控制器是预先制作的那个可以导入)。为了做到这一点,我删除了从控制器脚本跳功能,并增加了一个名为“魔方”的剧本其内容如下:Jump OnCollision()脚本不工作

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()”触发器,只要您一触即发即跳转。 但是,而是我得到一个快速跳的时候我看起来像这样空气中我出现这种情况即使:

https://youtu.be/ILtRac_RgLg

回答

1

首先,撤消您对RigidbodyFirstPersonController脚本执行的所有修改。如果可能的话,删除它并从Unity重新导入一个干净的。

请选择您的RigidBodyFPSController游戏对象,在编辑器中查看附件中的RigidbodyFirstPersonController脚本。在它下面有一个叫的设置高级设置。在高级设置,有变量称为壳牌偏移。将Shell Offset从其默认值0更改为0.5。再玩一次,这个问题应该消失了。如果这样做不起作用,那就更好了。这应该可以解决你的问题。

enter image description here

+0

我试图撞它一路攀升至10,仍然有问题更新移动:IM能跳,并环顾四周,但我不能动更新2:不得不检查air controll – SpikyCat

+0

@SpikyCat它应该是现在跳跃..它跳吗?如果是这样,你有什么问题? – Programmer

+0

一切都是固定的,我不得不只是把空调控制在 – SpikyCat

0

你是不是在空气中的重力就可以了影响。无论何时你离开碰撞,你的y轴向上速度都不起作用,重力正在向下发生。如果您不想使用重力,请在FPSController的Rigidbody组件中禁用gravity

+0

现在FPSController不能在所有 – SpikyCat