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/...",需确保对象池中对应路径存在。

相关推荐
叶帆6 天前
【YFIOs】用C#开发硬件之设备上云
开发语言·unity·c#
久数君6 天前
AI三维建模工具“造形家”:地理场景三维化的高效解决方案
unity·glb·ai算法·ai三维建模工具·地图框选·造形家·城市建筑模型
会思考的猴子6 天前
Unity VFX 属性 Postion 和 TargetPostion
unity
心前阳光7 天前
Unity资源导入之自动化资源导入
unity·自动化·游戏引擎
心前阳光7 天前
Unity之2021.3.45f2c1发布安卓程序遇到的问题
android·unity·游戏引擎
纪纯7 天前
PicoVR Unity Integration SDK 3.4 常用交互API
unity·游戏引擎·vr·pico
龙智DevSecOps解决方案7 天前
3A 游戏优化技术栈:如何打通引擎级分析工具与 DevOps 持续集成管线?
unity·性能优化·游戏开发·技术美术·perforce·unrealengine
葛兰岱尔7 天前
从 SolidWorks 到 Three.js,从 Inventor 到 Unity——制造业CAD模型“几何-语义一体化“转换,不再是天方夜谭!
开发语言·javascript·unity
玉夏7 天前
【Shader基础】UV 与纹理采样 Part1
unity·着色器·uv
zdr尽职尽责7 天前
Unity录像功能
学习·ui·unity·游戏引擎