Unity开发日记【第三天】——角色动画效果的实现

这篇具有很好参考价值的文章主要介绍了Unity开发日记【第三天】——角色动画效果的实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、站立和跑步动画效果

二、跳跃动画

三、对移动过程中的一些优化和修正


一、站立和跑步动画效果

本部分我们尝试给我们的角色添加各种动画效果

首先给角色添加组件Animator,我们可以看见该组件要求一个控制器。

Unity开发日记【第三天】——角色动画效果的实现

接下来在根目录下新建一个文件夹Animation用来存放所有的动画效果,在文件夹内继续分别为玩家和敌人创建动画文件夹,在玩家的文件夹中创建一个动画控制器命名为Player。

Unity开发日记【第三天】——角色动画效果的实现

将控制器拖拽到对应位置,这样我就可以控制这个动画了 

 Unity开发日记【第三天】——角色动画效果的实现

 为了编辑动画我们从上方窗口 > 动画 > 动画,打开动画窗口

Unity开发日记【第三天】——角色动画效果的实现

点击创建后,创建一个名为Idle(站立)的动画,然后找到素材包中的站立动画(在使用前记得调整每单位像素数)然后将站立的图片拖入(可以通过拖拽时间轴的方法调节动画速度)

Unity开发日记【第三天】——角色动画效果的实现

也可以通过对样本数字的修改来改变速度(我们可以从窗口 > 动画 > 动画器来查看当前动画)

Unity开发日记【第三天】——角色动画效果的实现

这样我们就做好了站立动画,我们接下来做跑动的动画,制作完成后,在动画器界面我们选择创建过渡连接Idel和run两个动画

Unity开发日记【第三天】——角色动画效果的实现

点击动画其的参数,添加参数running(float类型)实现两个动画的切换。

Unity开发日记【第三天】——角色动画效果的实现

点击站立到跑步的箭头,取消退出时间,过渡时间也设为0,条件设为running大于0.1

Unity开发日记【第三天】——角色动画效果的实现

另一侧箭头则相应设置。

然后打开player的脚本,就像刚体一样我们想要使用动画控制器就要先获取它

public Animator anmi;

然后我们把动画组件拖拽到对应的位置即可使用

Unity开发日记【第三天】——角色动画效果的实现

将下面的代码放入Move函数中,其中SetBool的功能是设定running的值,这里以角色的速度是否为0为判断依据

anim.SetFloat("running", Mathf.Abs(rb.velocity.x));

二、跳跃动画

打开素材包可以看见跳跃是两个动画分别是跳起和落下

同样先按照上一节的内容添加动画

然后绘制好动画切换的逻辑 

Unity开发日记【第三天】——角色动画效果的实现

为了控制切换过程我们设置两个变量(bool型)

Unity开发日记【第三天】——角色动画效果的实现

 同样按照之前的过程没有退出时间和切换时间,然后把条件写到每个上面,然后我们开始编辑代码,将下面的代码放入判断跳跃之后。

anim.SetBool("jumping", true);

这样我们就添加了跃起的动画,

接下来更改跳跃到下落的条件 

Unity开发日记【第三天】——角色动画效果的实现

还有从下落恢复到站立的状态这里我又建立了一个名为ideling的bool型变量 

Unity开发日记【第三天】——角色动画效果的实现

为了实现可以判断人物可以判断是否落在地上,所以首先建立一个名为Ground的图层【注意:不是排序图层】

Unity开发日记【第三天】——角色动画效果的实现

然后把地图的图层设置为Ground

Unity开发日记【第三天】——角色动画效果的实现

r然后定义如下变量

public LayerMask ground;

然后在player中把这个设为图层Ground 

 Unity开发日记【第三天】——角色动画效果的实现

这里我们写了一个新的函数用来实现这一过程,同时优化了原本的代码,完整代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public Rigidbody2D rb; //刚体
    public Collider2D coll; //碰撞体
    public Animator anim; //动画控制器
    public float speed; //速度
    public float jumpforce; //跳跃力
    public LayerMask ground; //碰撞体过滤

    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetButtonDown("Jump") )
        {
            rb.velocity = new Vector2(rb.velocity.x, jumpforce);
            anim.SetBool("jumping", true);
        }
    }

    private void FixedUpdate()
    {
        SwitchAnim();
        Move();
    }

    void Move() //控制玩家移动函数
    {
        float Horizontaldirection = Input.GetAxisRaw("Horizontal"); //玩家移动方向
        rb.velocity = new Vector2(Horizontaldirection * speed, rb.velocity.y);
        anim.SetFloat("running", Mathf.Abs(rb.velocity.x));
        if (Horizontaldirection != 0)
        {
            transform.localScale = new Vector3(Horizontaldirection, 1, 1); //控制角色翻转
        }
    }

    void SwitchAnim()
    {
        anim.SetBool("idleing", false);
        if (anim.GetBool("jumping"))
        {
            if(rb.velocity.y < 0)
            {
                anim.SetBool("jumping", false);
                anim.SetBool("falling", true);
            }
        }
        else if(coll.IsTouchingLayers(ground))
        {
            anim.SetBool("falling", false);
            anim.SetBool("idleing", true);
        }
    }

}

其中使用IsTouchingLayers(ground)来判断玩家的碰撞体是否和ground相碰,然后逻辑来改变各种设定好的参数实现状态的改变。

然后保存并运行代码我们就实现了各种动作动画

三、对移动过程中的一些优化和修正

1、之前我们也提到过角色会卡住或无法爬坡的问题都是因为我们使用方形碰撞体的问题,这里我们改变思路使用两个碰撞体,下半部分用圆形上半部分用方形,这样就可以解决问题还可以实现一些其他功能

Unity开发日记【第三天】——角色动画效果的实现

2、我的项目都是把变量写为public的格式然后拖动进来,可以改成私有模式后在Start函数中通过GetComponent来获取,可以减少Unity界面显示的参数数目文章来源地址https://www.toymoban.com/news/detail-446734.html

到了这里,关于Unity开发日记【第三天】——角色动画效果的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity之OpenXR+XR Interaction Toolkit实现 VR控制第一人称角色模型动画

    我们在开发VR项目时,有时会有第一人称视角的需求,即我们自己带上VR头显,能够看到自己的身体,如果模拟一些人物触电死亡,使用工具动画之类的需求,那么VR控制第一人称视角就比较实用了。 我们今天就来介绍一下如何实现VR设备控制第一人称: 1.角色手部跟随手柄移

    2024年02月09日
    浏览(45)
  • 【游戏开发小技】Unity中实现Dota里的角色技能地面贴花效果(URP ShaderGraph Decal)(1)

    [Toggle(_SupportOrthographicCamera)] _SupportOrthographicCamera(“_SupportOrthographicCamera (default = off)”, Float) = 0 } SubShader { // 关于tags的内容可以查阅官网手册:https://docs.unity3d.com/Manual/SL-SubShaderTags.html // 为了避免渲染顺序问题, Queue必须 = 2501, 它位于透明队列中 // 在透明队列中,Unity总是从后

    2024年04月16日
    浏览(56)
  • 【unity小技巧】实现没有动画的FPS武器摇摆和摆动效果

    添加程序摇摆和摆动是为任何FPS游戏添加一些细节的非常简单的方法。但是并不是所以的模型动画都会配有武器摆动动画效果,在本文中,将实现如何使用一些简单的代码实现武器摇摆和摆动效果,这比设置动画来尝试实现类似效果要容易得多 新增SwayNBobScript代码 代码挂载在

    2024年01月18日
    浏览(43)
  • 前端开发攻略---Vue通过自定义指令实现元素平滑上升的动画效果(可以自定义动画时间、动画效果、动画速度等等)。

    这个指令不是原生自带的,需要手动去书写,但是这辈子只需要编写这一次就好了,后边可以反复利用。 IntersectionObserver 是一个用于监测元素是否进入或离开视口(viewport)的 API。它可以帮助你在页面滚动时或者元素位置改变时进行回调操作,这样你就可以根据元素是否可见

    2024年04月11日
    浏览(52)
  • 【Unity】为角色添加动画

     在Animations的AnimationClips文件夹下自己为角色创建一个文件夹 为角色添加Animator  然后选中上面创建的文件夹,拖动到上图中的Controller中 点击最上方任务栏的Window=Animation=Animation,这会弹出一个Animation窗口  该窗口存在时,点击想要添加动作的对象,即可查看其已有的动作

    2024年02月16日
    浏览(49)
  • iOS开发-CABasicAnimation实现小球左右摆动动画效果

    iOS开发-CABasicAnimation实现小球左右摆动动画效果 之前开发中遇到需要实现小球左右摆动动画效果,这里作下记录。 2.1 CABasicAnimation CABasicAnimation基础动画,包括duration、repeatCount、repeatDuration、beginTime、timingFunction、autoreverses、fromValue、toValue、byValue、byValue等属性。 具体可以查

    2024年02月15日
    浏览(39)
  • unity 动画卡顿,操作角色时有卡手感

            当操作一个角色连续进行一些动作时,如跳跃,攻击时,有时会出现卡手的感觉。         一般角色执行一个动作时,为了和动画配合和防止该动作再次执行打断上一个正在执行的动作,代码执行时会加上一个锁。 例如跳跃动作的执行 if(jumpStopped){         jum

    2024年01月24日
    浏览(53)
  • flutter开发实战-实现左右来回移动的按钮引导动画效果

    flutter开发实战-实现左右来回移动的按钮引导动画效果 最近开发过程中需要实现左右来回移动的按钮引导动画效果 AnimationController用来控制一个或者多个动画的正向、反向、停止等相关动画操作。在默认情况下AnimationController是按照线性进行动画播放的。AnimationController两个监听

    2024年02月13日
    浏览(52)
  • iOS开发-实现自定义Tabbar及tabbar按钮动画效果

    iOS开发-实现自定义Tabbar及tabbar按钮动画效果 之前整理了一个继承UITabbarController的Tabbar效果 查看 https://blog.csdn.net/gloryFlow/article/details/132012628 这里是继承与UIViewController的INSysTabbarViewController实现及点击tabbar按钮动画效果。 INSysTabbar继承UIView,实现tabbarButton效果 INSysTabbar.h INSys

    2024年02月14日
    浏览(41)
  • 【Unity2D】角色动画的切换

    第一种方法是设置一个中间状态,从中间状态向其余各种状态切换,且各状态向其他状态需要设置参数 实现动作转移时右键点击Make Transition即可  实现动画转移需要设置条件 点击一种动画到另一种动画的线 ,然后点击加号添加Condition 比如机器人从向左走切换到向右走的条件

    2024年02月15日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包