【制作100个unity游戏之26】unity2d横版卷轴动作类游戏5(附带项目源码)

发布于:2024-05-20 ⋅ 阅读:(172) ⋅ 点赞:(0)

最终效果

在这里插入图片描述

系列导航

前言

欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第26篇中,我们将探索如何用unity制作一个unity2d横版卷轴动作类游戏,我会附带项目源码,以便你更好理解它。

本节主要是添加攻击和三段攻击

三段攻击

新增攻击图层,权重设置为1,覆盖模式
在这里插入图片描述
配置攻击动画
在这里插入图片描述
一段攻击播放90%,按了按键进入下一个攻击状态,最后一段攻击也是一样
在这里插入图片描述

一段攻击播放了百分百就退出,其他两段攻击一样
在这里插入图片描述
添加攻击按键操作
在这里插入图片描述
键盘按键
在这里插入图片描述
在这里插入图片描述

手柄按键,如果有的话
在这里插入图片描述
修改PlayerAnimation

//播放攻击动画
public void PlayAttack(){
    anim.SetTrigger("attack");
}

修改PlayerController

public bool isAttack;//是否攻击

private void Awake()
{
    // 。。。
    
    inputControl.Player.Attack.started += PlayerAttack;
}

//攻击
private void PlayerAttack(InputAction.CallbackContext context)
{
    playerAnimation.PlayAttack();
    isAttack = true;
}

效果
在这里插入图片描述

攻击

分别配置三段攻击动画触发区域
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置动画在合适的位置开启对应攻击触发器
在这里插入图片描述

设置只对敌人造成伤害

默认关闭攻击触发器,新增图层
在这里插入图片描述
确保配置只对敌人层造成伤害
在这里插入图片描述

如果你是unity2022版本(我这里是2021),你还可通过修改配置接触捕捉层的方式实现只对敌人层造成伤害
在这里插入图片描述
还要记得设置敌人的受伤无敌时间和生命值
在这里插入图片描述

如果你使用的是2022版本的unity,我们可以给野猪配置2个碰撞器,一个用于触发伤害,所以即使我们前面设置好了也可能不会造成伤害,我们需要提高野猪触发器的碰撞检测优先级
在这里插入图片描述
效果,野猪受伤并扣血
在这里插入图片描述

限制可以移动攻击

前面测试会发现人物可以移动攻击,因为我们没有做任何的限制
在这里插入图片描述
修改PlayerController

private void FixedUpdate()
{
    //受伤和攻击禁止移动
    if(!isHurt && !isAttack) Move();
}

每一段攻击动画都挂载状态机脚本,确保动画播放完isAttack变为false
在这里插入图片描述
在这里插入图片描述
测试发现还是会滑步,因为前面我们把人物物理材质改成了无摩檫力,其实方法有很多,在人物脚底再放一个带摩檫力的碰撞体也行,代码控制人物在跳起来取消摩檫力也行,这里为了方便我们直接在人物脚下再放一个碰撞体
在这里插入图片描述
效果
在这里插入图片描述
可以看到,这样攻击还是会有间隙,导致攻击前移,如果你不想要这种效果可以修改前面的AttackFinish(也可以保留,看自己项目的需求)
在这里插入图片描述

效果
在这里插入图片描述

问题 角色连续按四下攻击,最后会多a一下

可以在动画入口再多加一层判断
在这里插入图片描述
修改PlayerAnimation

anim.SetBool("isAttack", playerController.isAttack);

问题:站在原地连续攻击野猪,只有第一下攻击野猪才掉血,后面的攻击野猪不掉血

出现这个现象是因为OnTriggerStay2D有个休眠时间,它被触发一段时间后自动停止。要想再次触发该函数需要稍微移动其中一个碰撞盒,也就是玩家需要移动到不同位置攻击野猪它才会掉血。后面会让野猪动起来,这样这个问题就不存在了。

当然也可以修改OnTriggerStay2D的休眠时间,使之变长,这样即使在原地攻击野猪它也会持续掉血。

修改OnTriggerStay2D的休眠时间方法:点击Edit -> Project Settings,然后选择Physics 2D,如下图所示,将Time To Sleep(休眠时间)修改为一个较大的值,如10000(默认情况下是0.5)
在这里插入图片描述

源码

源码不出意外的话我会放在最后一节

参考

https://space.bilibili.com/370283072

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,以便我第一时间收到反馈,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,出于兴趣爱好,最近开始自学unity,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!php是工作,unity是生活!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到