Bullect.cs(bullet)——子弹基类

该脚本定义了一个带有对象池支持、可命中怪物或物品的子弹基类,子类可重写移动逻辑、特效或销毁行为。主要服务于塔防游戏中标准直线追踪型子弹。

声明

  • 目标物体的Transform( HideInInspector)子弹当前锁定的目标物体的 Transform

  • 子弹移动速度。

  • 子弹攻击力。

  • 所属塔的ID。(用于资源路径拼接)

  • 塔的等级。(用于加载对应等级的子弹模型和特效)

方法

protected virtual void Update()

游戏结束检查:

GameController.Instance.gameover,若游戏结束则调用DestoryBullect(),销毁子弹。

游戏暂停检查:

GameController.Instance.isPause,若暂停则return,子弹停止移动。

目标有效性检查:

检查目标是否为空或未激活(!targetTrans.gameObject.activeSelf),若无效则销毁。

子弹移动与转向:

根据目标标签(是"Item")计算移动位置:使用Vector3.Lerp,使子弹向目标移动并朝向目标。

  • Vector3.Lerp(start, target, speed * Time.deltaTime / distance)

调用 transform.LookAt 使子弹朝向目标

强制修正朝向

如果子弹的欧拉角y==0,则设置y 为 90(2D视角调整)。

核心方法

protected virtual void DestoryBullect()

销毁子弹的方法

  • 清空 targetTrans 引用。

  • 调用 GameController.Instance.PushGameObjectToFactory() 将子弹放回对象池。

  • 路径格式:"Tower/ID{塔id}/Bullect/{塔等级}"

protected virtual void CreateEffect()

创建击中特效的方法

  • 从对象池获取击中特效:GameController.Instance.GetGameObjectResource("Tower/ID{塔id}/Effect/{等级}")

  • 将特效位置设置为子弹当前位置(特效自动播放,无需额外代码)。

protected virtual void OnTriggerEnter2D(Collider2D collision)

2D触发检测的方法

触发条件:子弹进入 2D 触发器。
逻辑流程:

  1. 判断碰撞体标签是否为 "Monster""Item",且自身激活。

  2. 如果目标位置无效,或(碰撞体的标签是 "Item"GameController.Instance.targetTrans 等于null)→ 提前返回。

  3. 如果碰撞体是怪物,或(碰撞体的标签是 "Item"GameController.Instance.targetTrans 等于该碰撞体)→

· 向碰撞体发送 "TakeDamage" 消息,参数为 attackValue
· 调用 CreateEffect() 生成特效。
· 调用 DestoryBullect() 销毁子弹。

依赖的外部类

  • GameController:单例,提供全局状态(gameOver, isPause, gameSpeed)以及资源管理方法(GetGameObjectResource, PushGameObjectToFactory)。

  • targetTrans 指向的物体必须响应 TakeDamage 消息(通常为怪物类或可破坏物品类)。


拼写错误:类名 Bulle``c``t、方法 DestoryBullect 应为 Bullet / DestroyBullet

层次依赖 :资源路径硬编码为 "Tower/ID.../Bullect/...",需确保对象池中对应路径存在。

相关推荐
郝学胜-神的一滴37 分钟前
Horse3D 游戏引擎研发笔记(七):Clydesdale——从流式日志到多输出订阅
c++·qt·unity·游戏引擎·图形渲染·unreal engine·opengl
小贺儿开发21 小时前
Unity 程序员编曲花絮:汪峰《河流》细节修复
科技·学习·unity·程序员·音乐·demo·写代码
598866753@qq.com1 天前
Unity UniText笔记
unity·unitext
鼎艺创新科技1 天前
不依赖 UE/Unity:我们如何从零搭建一套国产三维 GIS 渲染引擎
人工智能·算法·unity·游戏引擎·三维电子沙盘
huihui3612 天前
校友网管理软件技术选型框架:基于功能核验与系统架构的量化评估
unity·系统架构·游戏引擎
五仁烧饼2 天前
Unity性能优化系列设置篇 - URP 移动端设置基线与分档策略
unity·游戏引擎
新手unity自用笔记2 天前
unity基于Socket的网络学习
网络·网络协议·学习·unity·c#·游戏引擎
心前阳光2 天前
Unity之XR Interaction Toolkit | IPointerDownHandler问题
unity·游戏引擎·xr
帅_shuai_3 天前
unity 静态字段内存查找工具
unity·游戏引擎
鹿野素材屋4 天前
Unity超轻量级中文语音播报,仅5兆大小,无需联网即可使用,适用于弹幕、提示等动态语音播出
unity·游戏引擎