噩梦射手(SurvivalShooter)教程(六)

本文是Unity官方教程SurvivalShooter系列的第六部分,讲解如何为怪物添加Animator Controller以实现动画,并创建EnemyAttack和PlayerHealth脚本来处理怪物攻击和角色生命值。通过设置SphereCollider和启用isTrigger,实现怪物与主角的碰撞检测。下一部分将涉及UI界面及怪物扣血逻辑的完善。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

SurvivalShooter 是Unity的官方教程案例

怪物动画

  1. 像之前主角的动画一样,给怪物添加Animator Controller
    tips:这个游戏里面的zoomBear和zoomBunny使用的是同一套动画
    这里写图片描述
    可以看到zoomBear没有动画文件,因为和zoomBunny共用,所以我们需要做两个动画控制器,一个是zoomBunny,一个是Hellephant。
    这里写图片描述
    怪物一出生就自动寻找主角,当主角死亡的时候则进入idle状态。

  2. 将controller挂到预制体上
    这里写图片描述

  3. 其余怪物也同样做法,然后运行,可以看到怪物移动的时候会播放动画了。
    这里写图片描述
  4. 剩下的状态我们再后期继续做,接下来处理怪物攻击。

怪物攻击

  1. 新建两个脚本EnemyAttack处理怪物攻击,PlayerHealth处理角色的生命值。
  2. PlayerHealth
    这里写图片描述
    TakeDamage是具体的扣血逻辑,下一节结合UI制作玩家的血条,这里为调试方便,先用打印日志来替代。
  3. EnemyAttack
    这里写图片描述
    这里写图片描述
    GameObject player;//表示主角
    PlayerHealth playerHealth;//需要得到PlayerHealth 脚本
    bool playerInRange = false;//判断主角是否在攻击范围内,这个游戏的设定是怪物触碰到主角就开始攻击。
    float timer;//时间变量
    public int attackDamage = 10; //每次攻击的伤害值
    public float attackTime = 1f;//每次攻击的间隔时间

每一帧的Update都在判断:如果角色处于攻击范围且时间足够攻击,则调用攻击函数


void OnTriggerEnter(Collider other){
        if (other.tag == "Player") {
            playerInRange = true;
        }
    }
    void OnTriggerExit(Collider other){
        if (other.tag == "Player") {
            playerInRange = false;
        }
    }

这两个函数都是Unity自带的判断碰撞体的函数,函数名不可写错

4.给三种怪物的预制体都加入碰撞体,为了编辑方便,可先将预制体拖到地图上,添加SphereCollider(当然也可以用别的Collider,根据怪物体型决定)。

这里写图片描述

5.确定isTrigger的选项勾上(非常重要),并将脚本挂在怪物身上
这里写图片描述
调整好后点击右上角的Apply,再删掉地图上的怪物就好,其余的怪物做法相同。

这里写图片描述

6.点击运行,打开Console面板,可以看到已经正确触发碰撞体了

这里写图片描述

预告:下一节开始设置UI界面以及完善怪物的扣血逻辑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值