[ARPG阶段二] 19. 走路到奔跑的过渡

在实际速度、动画上都要体现过渡

在这之前已经实现了两个简单动画以及Blend动画和简答动画之间的过渡,但是Blend动画序列之间是硬切的,需要给权重一个渐变值来实现内部的平滑过渡(现在的走路、跑步动画合并为一个BLend动画控制)。

首先我们要提供一个动画和移动速度的过渡速度量,再把原来玩家配置中的WalkSpeed扩展出RunSpeed用于速度区分。

	# Player_Controller类
    public float RunSpeed { get => warriorConfig.RunSpeed; }
    public float Walk2RunTransitionSpeed { get => warriorConfig.Walk2RunTransitionSpeed; }

	# WarriorConfig类
    public float WalkSpeed;
    public float RunSpeed;
    public float Walk2RunTransitionSpeed;

在Player_MoveState中控制动画和速度过渡。

            //处理移动
            Vector3 input = new Vector3(h, 0, v);
            if (Input.GetKey(KeyCode.LeftShift))
            {
                runTransition = Mathf.Clamp(runTransition + Time.deltaTime * player.Walk2RunTransitionSpeed, 0, 1);
            }
            else
            {
                runTransition = Mathf.Clamp(runTransition - Time.deltaTime * player.Walk2RunTransitionSpeed, 0, 1);
            }

            player.SetBlendAnimationWeight(1 - runTransition);

在玩家移动,由走到跑时,渐变量应该正向增加,相反则递减,在设置二者权重时,走到跑渐变量由0到1,对应1端口的权重应该由1到0,所以1-。

            float speed = Mathf.Lerp(player.WalkSpeed,player.RunSpeed,runTransition);

对应玩家的速度也应该在走跑之间根据渐变量进行过渡。

效果如下,这里过渡的速度设置的很大,可以很明显看到玩家动画和移动速度的快速转变。

alt

Unity独立游戏开发-ARPG 文章被收录于专栏

Unity独立游戏开发

全部评论

相关推荐

给我发了笔试链接,想着等晚上回去做,结果还没做流程就终止了
伟大的小黄鸭在学习:我猜就是笔试几乎没用,就是用来给用人部门拖时间复筛简历的,可能用人部门筛到你简历觉得不合适就提前挂了
投递小鹏汽车等公司10个岗位
点赞 评论 收藏
分享
07-19 13:28
长沙学院 Java
程序员小白条:你有面试就有希望,没面试自然就没希望,到时候就知道了,你问别人也没啥用处的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务