如何创建一个可以确定函数是否正在运行的变量(最好是布尔值)?

时间:2015-02-08 01:16:54

标签: unity3d boolean unityscript

CONTEXT

我正在制作一个统一游戏,我需要测试我的玩家是否在地面上,对于任何熟悉“OnCollisionEnter”之类的东西,他们都无法使用制作游戏功能的方式, ,“OnControllerColliderHit”有效,但没有负面/退出。

我想要做的是在函数运行时有一个布尔值等于true,并且一旦函数停​​止被调用(播放器不在地面上),这个布尔值将变为false。

随意询问您是否需要任何其他信息,或者(如果您在统一方面的知识)找到关于“OnCollisionEnter”的不同解决方案。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您的问题是检查角色是否在地面上,您可以从角色到地面raycast,我们会为不均匀添加余量 您应该更改此值并找到最适合您的值的平台 地面

float distanceToGround;
float margin;

 void Start(){
   // get the distance to ground
   distanceToGround = collider.bounds.extents.y;
 }

  boolean IsGrounded() {
   return Physics.Raycast(transform.position, -Vector3.up, distanceToGround +  margin);
 }

 void Update () {
   if (IsGrounded()){
     //DoSomething
   }
 }

如果你的角色附加了character controller组件(因为你正在使用OnControllerColliderHit所以它肯定是附加的)你可以简单地检查这样的接地

    void Start(){
         CharacterController controller = GetComponent<CharacterController>();
      }

 void Update() {       
        if (controller.isGrounded)
            //DoSomething      
    }