我的Unity 3D之旅——第一人称射击游戏(6)

本文介绍了在Unity 3D中如何实现第一人称射击游戏的主角与敌人之间的交互。通过添加OnDamage方法处理主角被攻击和敌人被射中的逻辑,以及设置碰撞体和射线检测,实现了敌人自动寻路、攻击主角以及主角的射击功能。敌人生命值为零时进入死亡状态,同时更新UI界面并销毁敌人。

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

七、交互

现在敌人已经会自动寻路并且攻击主角了,但并不能造成实际伤害,主角也还不能攻击敌人。接下来我们就分别为主角和敌人的脚本添加处理代码来实现主角和敌人之间的交互。

1. 打开脚本Player.cs,添加OnDamage方法来处理主角被攻击时的逻辑。

    /// <summary>
    /// 主角被攻击时触发的逻辑代码
    /// </summary>
    /// <param name="damage">伤害数值</param>
    public void OnDamage(int damage)
    {
        life -= damage;
        // 更新UI生命值
        GameManager.Instance.SetLife(life);
        // 如果生命为0,游戏结束,取消鼠标锁定
        if (life <= 0)
        {
            Cursor.lockState = CursorLockMode.None;
        }
    }

2. 在Player类中添加几个属性,为射击做准备。

    public LayerMask layer; // 射击时射线能射到的碰撞层
    public Transform fx; // 射中目标后的粒子效果
    public AudioClip clip;  // 射击音效

    private Transform muzzlePoint; // 枪口的Transform组件
    private float shootTimer = 0; // 射击间隔的计时器

3. 在Start方法中添加如

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值