Unity攻速表现优化:人物攻速提升加快动作

122 篇文章 13 订阅
订阅专栏

  我们的项目中并没有要求那么精确的动作表现,但是因为有攻击动作的存在,如果抬手就算伤害的话,表现有些奇怪。所以做了如下改动:

 

1,播放动作中间帧执行伤害判断
2,播放动作时长>攻速,加快播放速度
2,播放动作时长<=攻速,速度为1

测试代码如下:

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

public class TestAtkAnim : MonoBehaviour
{

    public Animator anim;

    public float atkSp = 1f;


    public float sp = 0.2f;


    // Start is called before the first frame update
    void Start()
    {
        //初始化动作模型
        AnimationClip[] clips = anim.runtimeAnimatorController.animationClips;
        Debug.Log(clips.Length);
        foreach (AnimationClip clip in clips)
        {
            Debug.LogError(clip.name + "  " + clip.length);

            if (clip.name == "attack")
            {
                atkSp = clip.length;
                break;
            }
        }
    }


    public void SetAnimationSpeed(Animation ani, string name, float speed)
    {
        if (null == ani) return;
        AnimationState state = ani[name];
        if (!state) state.speed = speed;
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
         
            var _sp = 1f;
            if (atkSp > sp) _sp = atkSp / sp;
            anim.speed = _sp;
            anim.SetTrigger("attack");
        }

    }


    /// <summary>
    /// 获得animator下某个动画片段的时长方法
    /// </summary>
    /// <param animator="animator">Animator组件</param> 
    /// <param name="name">要获得的动画片段名字</param>
    /// <returns></returns>
    public float GetAnimatorLength(Animator animator, string name)
    {
        //动画片段时间长度
        float length = 0;

        AnimationClip[] clips = animator.runtimeAnimatorController.animationClips;
        Debug.Log(clips.Length);
        foreach (AnimationClip clip in clips)
        {
            Debug.LogError(clip.name + "  " + clip.length);
            if (clip.name.Equals(name))
            {
                length = clip.length;
                break;
            }
        }
        return length;
    }





}

  这里主要用了runtimeAnimatorController.animationClips取到动画时长,然后使用  动画时长/攻速时间=动画倍速  。最后表现为攻速越快,人物动作越快。

  测试效果如下:

 

  原攻击时长为1.3;当攻速时长设置为0.2时候,动画在0.2秒内播完。

  至于伤害判断,可以进一步通过状态机划分来实现。这里就不再赘述。

游戏中慢动作|加动作的实现
yewei7890的专栏
07-20 8855
很多游戏将慢动作、快动作作为一种特效,来给游戏增加可玩性及刺激感。非常常见的格斗游戏中,一般大招的施放前兆是靠慢动作来表示的。街霸游戏,运用的灰常灰常OX~Unity中实现慢动作非常简单:Time.timeScale 是关键。不过Unity建议,在放慢了时间Time.Scale
UNITY3d人物模型+动作
10-06
总的来说,"UNITY3d人物模型+动作"涵盖了Unity3D中游戏对象的视觉表现和行为控制的核心技术。熟练掌握模型导入、动画创建和控制,对于制作高质量的游戏至关重要。通过不断的实践和学习,开发者可以创造出栩栩如生的...
unity模拟武器射击心得
weixin_54475760的博客
07-25 568
任何武器都有自己的或者是冷却时间,而并不能由玩家自己通过鼠标的点击度决定,所以需要有武器自己的击间隔,这里只要调整FireSpeed间隔时间来实现变化。 玩家可选择的开火方式有两种:单点、长按。单点可以选择性开火,以节省子弹,长按可以更方便较快的武器使用,但无论怎样,再快的单点也会受影响,并不会比长按更快。 如下为完整代码: public class Weapon : MonoBehaviour { public Ga...
Unity】如何做一个很平滑的行人动画,且可以根据行人度动态调整动画度?
最新发布
karry_zzj的博客
06-12 1097
此外,在Walk, Jog, Run这三个动画中,还可以根据行人度调整动画自身的度Speed。在Unity editor中动画度在如下图中调整(默认为1),也可以代码动态调整。并通过度做动画的切换,其中Animator有一个方便之处是不同动画之间切换的过渡是可以通过Transitions来实现,这样动画之间切换就不会突兀。将映射后的值调整到动画上的度就可以根据行人度动态调整动画的度。为要映射的目标区间最大值,为要映射的目标区间最小值,为归一化映射后的值。
Untiy中控制Animation的播放
热门推荐
岁月相伴
10-24 3万+
Unity组件里面的Animation是可以控制播放度的,通过调整AnimationState的speed属性即可更改某个动画的度。 在实际需求中,可以通过改变动画度来更快地打开一个奖励或者过场等等,这样可以让用户减少等待时间,提升体验感。 官方也给出了相关的控制接口 https://docs.unity3d.com/ScriptReference/Animation.html sp...
Unity Timeline改变动画播放度的几种方法
Guido Kuo's Blog
10-10 7909
Unity Timeline改变动画播放度的几种方法,编辑器修改,代码动态修改。
【瑞模网】unity中animator中Trigger多次触发动画解决方法
rrmod的博客
02-10 815
前两天开发游戏时遇到一个十分令人心态爆炸的问题,我在做一个角色动画控制的时候,想用trigger来控制角色的击,但是测试的时候发现击动画会触发两次,后来找了半天终于看到了b站傅老師MrFu的黑魂复刻的视频中的解决方案。dle状态到Attack状态需触发命名为attack的Trigger,从Attack回到Idle则不用任何条件,如果控制Trigger触发时,连续播放了两次Attack的动画就可以继续使用接下来的步骤。为其挂载一个新代码命名为FSMCleaSignals,并将以下代码粘贴于代码页中。
Unity自定义工具之特效播放度修改工具
SmillCool的博客
09-16 1808
unity 特效播放度批量修改工具
Unity大量人物模型资源带动作
11-22
Unity大量人物模型资源带动作 教程地址:
Unity人物模型资源集合
08-09
这个资源集合中的模型包括人物运动动画,这意味着每个角色都有预设的动作序列,如行走、跑步、击、跳跃等,这些都可以直接导入到Unity中使用。使用这些预设动画,你可以快为角色赋予生命,而无需从零开始制作...
unity3d 游戏人物模型 野蛮人 Barbarian(带19动作动画).rar
11-25
在本资源中,“unity3d 游戏人物模型 野蛮人 Barbarian(带19动作动画)”是一个专为Unity3D设计的游戏角色模型,包含了一个名为“Barbarian”的野蛮人角色,配备了丰富的动作动画,可以满足游戏开发中的多种场景...
Unity3D - 图形性能优化:渲染统计窗口
04-07
Unity3D - 图形性能优化:渲染统计窗口
unity3D人物模型和动作-Aunity3d Arteria 女巫师.rar
11-25
在这个“unity3D人物模型和动作-Aunity3d Arteria 女巫师.rar”压缩包中,包含的是一个专为Unity3D设计的人物模型——女巫师,以及相关的动作数据。 首先,我们来了解一下Unity3D中的3D人物模型。在Unity中,人物...
unity3d+带动作的刺客模型
04-25
unity3d带动作的刺客模型、人物角色、刺客、模型(如真有需要,请私信)
Unity游戏开发优化
11-05
Unity 游戏开发优化 Unity 游戏开发优化是指在 Unity 游戏引擎中对游戏的性能进行优化,以提高游戏的运行度和效率。优化可以从多方面入手,包括游戏资源的优化、算法的优化、游戏对象的优化、物理引擎的优化等。 ...
Unity如何设计一个战斗系统
voidinit的专栏
06-09 1976
在游戏中,战斗系统的基本原理是通过计算双方的属性和技能等信息,来模拟双方的战斗过程。游戏开发者需要在Unity中创建战斗场景,并将角色模型和技能效果等元素放置在场景中。在上述代码中,游戏开发者可以在BattleScene脚本中创建玩家角色和敌人角色,并将角色放置在场景中。游戏开发者需要在Unity中定义技能的属性和效果,并在代码中实现技能的释放和效果逻辑。例如,游戏开发者可以在UseSkill方法中检查技能是否可用、消耗技能资源、播放技能动画和处理技能效果等操作。
Unity中的帧数
L的博客
08-10 8071
一:什么是帧数 帧数就是在1秒钟时间里传输图片的数量,通常用FPS(Frames Per Second)表示 每一帧都是静止的图象,快连续地显示帧便形成了运动的假象,高的帧率可以得到更流畅、更逼真的动画,所以每秒钟帧数越多,画面也会更加流畅在PC端,FPS越高越好,FPS越高游戏越流畅,当然太高也没有必要。不过在手机平台上,游戏帧数跑高了,CPU和GPU负荷相应则会增大导致发热。一般帧数为60帧就足够稳定了 二:Unity中锁帧 Unity中提供了锁帧的方法: Application.targe
Unity 2021性能优化指南:工具与策略
Unity性能优化(2021版)文档主要涵盖了Unity项目优化的基本概念,以及如何使用内置的Stats窗口来监测游戏性能,包括音频和图形数据的关键指标,旨在帮助初级到中级开发者提升项目的运行效率。” Unity是一款广泛...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Unity3D发布微信小程序 15042
  • 精品LowPoly低多边形风格模型插件资源包合集(随时更新) 14253
  • Unity与IOS互调 9068
  • bat批处理命令大全(翻译转载) 8120
  • Unity打包发布IOS端记录 6445

分类专栏

  • 工作 16篇
  • 算法 14篇
  • 动画模型 4篇
  • Laya3.0 1篇
  • TypeScript 1篇
  • shader 2篇
  • Android 17篇
  • 性能测试 4篇
  • C#学习笔记 21篇
  • 框架 6篇
  • IOS 4篇
  • 言职 12篇
  • 案例 5篇
  • 插件 14篇
  • U3D 122篇
  • laya引擎 8篇

最新评论

  • Unity格斗游戏,两个角色之间互相锁定对方,做圆周运动

    2302_82003308: 用c#写的吗?

  • Unity获取 SHA1 与 密钥散列

    折麽王: https://base64.guru/converter/encode/hex 可以直接把应用签名直接使用这个里面转一下

  • Unity加载AB包在手机上显示正常,在电脑上显示粉色

    折麽王: 如果不支持OpenGL ES3 可以用Vukan试一下

  • Unity使用反向遮罩实现镂空shader

    鹿野素材屋: 子节点用多边形

  • Unity使用反向遮罩实现镂空shader

    JacketLu: 怎么实现多边形呢,我的使用子节点使用圆形图片,但是显示的是矩形镂空

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • Unity格斗游戏,两个角色之间互相锁定对方,做圆周运动
  • Unity按键表大全
  • Unity加载远程sprite图标
2024年10篇
2023年21篇
2022年37篇
2021年43篇
2020年46篇
2019年20篇
2018年6篇
2017年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码光明模板推广观澜优化吉祥设计网站石岩网站seo优化东莞seo优化大芬模板制作福田百搜标王双龙网站建设坂田标王永湖关键词按天计费大芬seo网站推广吉祥百度竞价西乡百度爱采购爱联网站优化排名西乡网站优化推广惠州SEO按天收费南联网站排名优化东莞SEO按效果付费罗湖网站改版塘坑百度网站优化排名荷坳seo网站推广福永网站改版坪山网站优化按天扣费深圳网站改版坑梓网站推广方案盐田网站建设双龙百度关键词包年推广双龙SEO按天计费盐田网站优化宝安阿里店铺运营歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化