Use On Ground Sensor(使用地面侦测器)

只要装到东西outoutcol.length就不等于0,那么就向父级发送message:
OnGroundSensor:

 if (outputCols.Length != 0)
        {
            SendMessageUpwards("IsGround");//发送isground信号给父级
            //foreach (var col in outputCols)
            //{
            //    //print("collision:" + col.name);//发生碰撞的物体名称
            //}
        }
        else
        {
            SendMessageUpwards("IsNotGround");//发送isnotground信号给父级
        }

ActorController:

    /// <summary>
    /// Message processing block
    /// </summary>
    public void OnjumpEnter()
    {
        pi.inputEnabled = false;     //跳起来之后不能移动
        //print("OnJump Enter!!!!!!!");//测试FSMOnEnter的讯号有没有发送到此层级
        lockPlanar = true;
        thrustVec = new Vector3(0,jumpVelocity,0);//修改thrustVec
    }


    public void OnjumpExit() 
    {
        pi.inputEnabled = true;     //落地可以移动
        //print("OnJump Exit!!!!!!!");//测试FSMOnExit的讯号有没有发送到此层级
        lockPlanar = false;
    }

    public void IsGround()//接收子层发过来的信号
    {
        print("is ground!");
    }

    public void IsNotGround()//接收子层发过来的信号
    {
        print("is not ground!!!");
    }

这样就可以把子级的信息成功的发送出来然后再用代码进行控制Animator中fall——》ground的转换

先在Animator中的Parameters加入一个bool(isground)在从fall拉一个转换到ground,在消勾Exit Time 加一个Conditions(isground)
增加代码:

public void IsGround()//接收子层发过来的信号
    {
        print("is ground!");
        anim.SetBool("isGround",true);//当isGround为true的时候判断为落地 播放落地动作
    }

    public void IsNotGround()//接收子层发过来的信号
    {
        print("is not ground!!!");
        anim.SetBool("isGround", false);//当isGround为false的时候判断为在空中 播放滑翔动作
    }

再将jump到ground的转换增加一个Conditions(isground),再将jump的判断顺序进行修改改为先判断是否落地再判断是否滑翔。

这样就实现了增加滑翔动画。

猜你喜欢

转载自blog.csdn.net/weixin_44025382/article/details/85028783