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

相关推荐
郝学胜-神的一滴2 小时前
[简化版 GAMES 101] 计算机图形学 17:纹理技术从基础原理到多场景实战应用
c++·unity·游戏引擎·图形渲染·three.js·opengl·unreal
_ZHOURUI_H_17 小时前
MyFramework: 同样是 Unity 游戏开发框架,和 HTFramework 的设计取向有什么不同?(下)
unity·游戏引擎·游戏开发·游戏ui·手游开发
丁小未2 天前
基于MVVM框架的XUUI 扩展的UI管理系统教程
unity·mvvm·ui框架·xuui·ui管理器
丁小未3 天前
基于MVVM框架的XUUI HelloWorld 新手教程
unity·性能优化·c#·游戏引擎
丁小未3 天前
基于MVVM框架的XUUI MoreComplex案例
unity·c#
EQ-雪梨蛋花汤3 天前
【Unity笔记】VR 一体机画面锯齿、模型边缘闪烁、接缝抖动排查:MSAA、Mipmap、Render Scale、Z-Fighting 全流程记录
笔记·unity·vr
YigAin3 天前
Unity Spine 资源出现白边的解决办法
unity·游戏引擎·spine
郝学胜-神的一滴4 天前
中级OpenGL教程 013:渲染器类架构设计与逐帧渲染流程详解
开发语言·c++·unity·游戏引擎·图形渲染·opengl·unreal
真鬼1236 天前
【Unity WebGL】内嵌网页与双向通信
unity·游戏引擎·webgl
zyh______6 天前
C#语法糖(按照实用性排序)
unity·c#