This commit is contained in:
2026-10-11 18:30:19 +08:00
parent fa64d44db5
commit d35c47deea
3 changed files with 901 additions and 10 deletions
+22 -8
View File
@@ -2,17 +2,25 @@ using System;
using UnityEngine; using UnityEngine;
/// <summary> /// <summary>
/// 起飞炮台(TurretData 子类): /// 起飞炮台(TurretData 子类):炮台模式 / 起飞模式 两态分离。
/// 平时是一门正常炮台(照常手动瞄准开火/自动开火/锁定瞄准); /// 【炮台模式(IsFlying=false,默认形态)】就是一门正常炮台:手动瞄准开火/自动开火/锁定瞄准照常,
/// 额外支持起飞模式:轻点空白处 → 炮台飞到该点(点到哪飞到哪)→ 到达后持续向上发射子弹, /// 与普通 TurretData 行为完全一致(轻点屏幕只走正常开火流程,不会起飞)。
/// upFireDuration 到时自动降落回原位恢复正常开火;起飞时播放特殊 spine 动画 /// 【起飞模式(IsFlying=true)】点"起飞按钮"进入(按钮逻辑待完善;默认 allowTapTakeoff=false
/// (takeoffAnim 播一次,flyLoopAnim 循环衔接)。 /// 时轻点屏幕不触发起飞):炮台飞到目标点 → 到达后持续向上发射子弹,upFireDuration
/// 到时自动降落回原炮台位;起飞时播放特殊 spine 动画(takeoffAnim 播一次,flyLoopAnim 循环衔接);
/// 期间炮口固定朝上、状态切换/开火/按住输入均被拦截(见 ChangeState/各开火入口)。
/// 起飞入口:TakeoffToScreenPos(当前轻点路径,受 allowTapTakeoff 控制);
/// 将来"起飞按钮"接入后走同一入口即可(或在面板上打开 allowTapTakeoff 恢复轻点起飞)。
/// 交互判定在 GameMainPanel_FishBase.HandleInput(轻点=按下短+几乎没移动;按住扫射不触发起飞)。 /// 交互判定在 GameMainPanel_FishBase.HandleInput(轻点=按下短+几乎没移动;按住扫射不触发起飞)。
/// 挂在 XJMH 座位炮台(xjmhTurretList 中的子对象)上即可,无需改预制体结构。 /// 挂载:XJMH 座位炮台(xjmhTurretList 中的子对象),飞机预制体挂在炮台节点下面(PW_Plane_x,默认隐藏)。
/// 注意:不要在本类定义 Awake/OnEnable,会隐藏基类的同名私有初始化逻辑。 /// 注意:不要在本类定义 Awake/OnEnable,会隐藏基类的同名私有初始化逻辑。
/// </summary> /// </summary>
public class FlyTurretData : TurretData public class FlyTurretData : TurretData
{ {
[Header("起飞入口")]
[Tooltip("允许轻点屏幕起飞(默认关=false:没点起飞按钮就不起飞)。\n将来\"起飞按钮\"逻辑接入后走专门入口,不受本开关限制")]
public bool allowTapTakeoff = false;
[Header("起飞(点哪飞哪)")] [Header("起飞(点哪飞哪)")]
[Tooltip("起飞特殊 spine 动画名(起飞时播一次;为空则直接播飞行循环动画)")] [Tooltip("起飞特殊 spine 动画名(起飞时播一次;为空则直接播飞行循环动画)")]
public string takeoffAnim; public string takeoffAnim;
@@ -85,11 +93,17 @@ public class FlyTurretData : TurretData
/// <summary> /// <summary>
/// 起飞/移动到目标屏幕点(点到哪飞到哪)。 /// 起飞/移动到目标屏幕点(点到哪飞到哪)。
/// 首次调用=起飞;飞行中再次调用=改目标点;降落中调用=取消降落改飞新目标。 /// 首次调用=进入起飞模式;飞行中再次调用=改目标点;降落中调用=取消降落改飞新目标。
/// 返回 false 表示未起飞(节点不是 UGUI 或画布引用缺失)。 /// ⭐ 轻点起飞总开关:未进入起飞模式时受 allowTapTakeoff 控制——默认 false,
/// 即"没点起飞按钮就不起飞"(轻点松开只会走正常 Idle/开火流程);飞行中改目标不受此限制。
/// 返回 false 表示未起飞(开关未开 / 节点不是 UGUI / 画布引用缺失)。
/// </summary> /// </summary>
public bool TakeoffToScreenPos(Vector2 screenPos) public bool TakeoffToScreenPos(Vector2 screenPos)
{ {
// ⭐ 默认不响应轻点起飞("起飞先不做",起飞按钮逻辑待完善):进入起飞模式前先过开关。
// 已在飞行=起飞模式内部行为(改目标点),不受开关限制
if (!IsFlying && !allowTapTakeoff) return false;
EnsureRefs(); EnsureRefs();
if (_rect == null || _parentRect == null || _canvasRect == null) return false; if (_rect == null || _parentRect == null || _canvasRect == null) return false;
File diff suppressed because it is too large Load Diff
@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 16f0b0b6d0b7542bfbd20a3e05b04ff1 guid: b8aad276f6c30ea498a65ccd21c89209
MonoImporter: MonoImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 2 serializedVersion: 2