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

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

前言

欢迎来到【制作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)

源码

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

目录
相关文章
|
3天前
|
图形学
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)(上)
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)
10 2
|
3天前
|
图形学
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)(下)
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)(下)
8 0
|
3天前
|
存储 JSON 关系型数据库
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版13(完结,附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版13(完结,附带项目源码)
9 0
|
3天前
|
图形学
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版12(附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版12(附带项目源码)
9 0
|
3天前
|
存储 图形学
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版11(附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版11(附带项目源码)
10 0
|
3天前
|
图形学
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版3(附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版3(附带项目源码)
14 2
|
3天前
|
图形学
【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)
【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)
13 0
|
3天前
|
存储 JSON 关系型数据库
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
12 2
|
3天前
|
图形学
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版2(附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版2(附带项目源码)
8 1
|
3天前
|
存储 JSON 图形学
【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解
【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解
6 0