美文网首页
从零开始的RPG制作(3.2跳跃-落地-角色动作)

从零开始的RPG制作(3.2跳跃-落地-角色动作)

作者: 小蜻蜓队长 | 来源:发表于2019-04-27 09:07 被阅读0次

前面的章节,我们的小姐姐已经可以又跑又跳了,但是跳的时候她的动作还没有改变,这一次我们给小姐姐添加上跳跃的动作。
我们看了一下,这个小姐姐自带的跳跃动画实在是太过奇特~,不太符合我们的需求,所有,我们得去找一个动画,下面提供一个免费的动画下载的网址,它上面的骨骼都是标准格式,很适合我们。
动作下载
我们在网址里搜索了一个jump的动作,发现了他。

跳跃

很适合我们,就用他了,在使用他之前,我们还得进行一步操作。


修改

将动画类型改成humanoid。接着就将动画丢到动画控制器上。与我们的基础混合树链接起来。


动画设置

接着我们创建一个触发器,jump,用于两者动画的切换


触发器设置

下面你们是不是想跃跃欲试,在上一节内容提到的

  float jumpPower  = 3.5f
    public void startJump(bool jump) {
        if (jump){
            moveDirection.y += jumpPower;
            //加入我们的动画设置。----------
        }
    }

不过这样会有一种文体,那就是 如果手指在跳跃键上研究了,这个数值会增加,我们的小姐姐一下子就会变成一个一跃百米的超人,那你可能会说加控制,跳起瞬间就不能控制在增加数值了,然后在落下接触地面的时候这个打开开关,然后检测落下,检测跳起,而且由于你跳起的时候是个渐变的过程,所以说你明明说了跳起,但是你的小姐姐还是在地面上的,然后把你控制跳跃的开关打开了,小姐姐又变成了超人……总之这里面需要非常复杂的逻辑,而我们这里提供了一种简单的思路,利用动画的event。

1.首先我们在PlayerTestView和PlayerTestView_Anim进行添加和修改。

PlayerTestView:

   public void startJump(bool jump) {//这部分仍然在我们的PlayerTestMediator控制,和上一节内容一样
        if (jump ) {
            animator_Jump();
        }
    }

    public void onJumpEnter() {//新增加动画event事件。
        moveDirection.y += jumpPower;
    }

PlayerTestView_Anim:

    struct PlayerAnimaId {
        public int Idle;//禁止状态行为切换控制。
        public int baseAniam;
        public int jump;//新增加跳跃
    };

    private void playerAnimatorInit() {
        animator = GetComponent<Animator>();
        pad.baseAniam = Animator.StringToHash("Walk");
        pad.Idle = Animator.StringToHash("Idle");
        pad.jump = Animator.StringToHash("Jump");//新增加跳跃
    }

    private void animator_Jump() {//控制跳跃
        animator.SetTrigger(pad.jump);
    }

2.在跳跃动画中开始设置跳跃事件

跳跃事件设置

我们这里选择小姐姐踩地的一帧作为我们的回调。

一切准备就绪我们来看一下效果。 效果。

效果还行,可是这里会有一个问题,那就是当跳跃动画播放结束之后,我们的小姐姐又在空中切换成了跑步,这不是我们想要的,在下一节中,我们将设置小姐姐空中停留的状态,以及落地检测。
上一节
下一节

相关文章

网友评论

      本文标题:从零开始的RPG制作(3.2跳跃-落地-角色动作)

      本文链接:https://www.haomeiwen.com/subject/sblhnqtx.html