查看: 6954|回复: 2
打印 上一主题 下一主题

[其他] 使用unity实现顿帧,大大提升打击感(转载)

[复制链接]
may    

8830

主题

81

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
52344
精华
343

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2016-2-21 08:12:05 |只看该作者 |倒序浏览

打击感两大神器,震屏和顿帧,最近做的游戏总感觉像是打棉花,到网上查了下打击感实现方法,就自己弄了一下顿帧,顾名思义,就是当你打到敌人的时候动画会稍微暂停一会,如果你用多边形碰撞检测的方式来进行伤害判定,打击多个敌人时就会有横扫千军的快感
但是如果是手游,一般就aabb或射线检测了,但即使如此,也会带来强大的打击感
我以手游,animation为例说下自己的思路

首先,每个人物都要实现一个检测自己是否受到伤害的函数,public virtual void DamageCheck(object sender,DamageCheckEventArgs e)
                这里sender指的是谁调用了这个函数,DamageCheckEventArgs派生自EventArgs,存放一些信息,如攻击方的攻击范围,朝向等
                用这种方式几乎涵盖了我们需要的所有信息,而且十分灵活,如果我们需要多获取某个信息,直接修改EventArgs即可,比把每个信息单独作为参数传递要方便许多
public class DamageCheckEventArgs :  EventArgs {
        public enum DamageType
        {
                Instant = 0,
                Delay = 1,
        }
        public DamageType damageType;
        public EquipmentStatus senderEquip;
        public Vector3 senderPos;
        public int senderDirect;
        public int senderCamp;
}

和设置顿帧时间的函数,由于animation没办法获取播放动画的string,所以我就把这个string存在了playingAnimString这个变量里,
当需要顿帧时,设置下播放速度,然后在update里不断-time,到0后速度复原
        public void StandStill(float time)
        {
                UpperAnim [playingAnimString].speed = 0f;
                standAnimString = playingAnimString;
                standstillTime = time;
                Debug.Log (playingAnimString);
        }


如果项目比较大的话,我建议把这个函数单独写成一个类,
定义一个EventManager单例类,用来管理各种事件,向下面这样,至于怎么弄单例我就不写了,网上很多资料
public class EventManager:UnitySingleton<EventManager>{
        public delegate void EventHandler(object sender,DamageCheckEventArgs e);
        public event EventHandler DamageCheckEvent;

        public void DamageCheck(object sender,DamageCheckEventArgs e) { DamageCheckEvent(sender,e); }
}

在游戏运行初,把各个人物的DamageCheck注册到这个单例的DamageCheckEvent事件上
然后,我们就可以在攻击动画适当的时候调用EventManager.Instance. DamageCheck
这里的sender我给他赋的是This,即这个脚本本身,这样当伤害检测为真时,直接调用((CharacterBase) sender).StandStill(0.2f)即可

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏3 支持支持0 反对反对0
回复

使用道具 举报

0

主题

1

听众

825

积分

初级设计师

Rank: 3Rank: 3

纳金币
356
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2016-2-22 16:45:09 |只看该作者
涨姿势了  新手别是试试好用不
回复

使用道具 举报

0

主题

1

听众

36

积分

设计初学者

Rank: 1

纳金币
3
精华
0
板凳
发表于 2016-2-23 14:44:39 |只看该作者
小白不开心 代码没给全啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-7-22 03:10 , Processed in 0.081846 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部