1111111
This commit is contained in:
@@ -180,6 +180,9 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
[Header("炮台旋转")]
|
||||
public Transform tra_CurrTurret;
|
||||
public float currentAngle;
|
||||
[Tooltip("炮口最大偏转角度(度),相对基准方向:下方座位(0,1)基准=朝上0°,上方座位(2,3)基准=朝下180°。" +
|
||||
"超出范围的角度会被钳制回边界(本地玩家/远程同步/bot 全部生效)。<=0 或 >=180 表示不限制")]
|
||||
public float maxRotationAngle = 90f;
|
||||
|
||||
/// <summary>
|
||||
/// 炮台在世界坐标(Z=0平面)的位置缓存。
|
||||
@@ -1611,6 +1614,20 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
// ⭐ 激光发射期间锁定方向:忽略旋转请求(激光沿原方向打到爆奖结束)
|
||||
if (isLaserLocked) return;
|
||||
|
||||
// ⭐ 最大旋转角度约束:炮口只能偏离基准方向(下方座位朝上=0°,上方座位朝下=180°)±maxRotationAngle
|
||||
// - 本地玩家瞄准/远程同步/bot 旋转全部经过这里,统一钳制
|
||||
// - 起飞炮台飞行期间豁免(炮口固定朝上,PointUp 传 0° 会被上方座位基准 180° 错误钳制)
|
||||
// - maxRotationAngle<=0 或 >=180 表示不限制
|
||||
if (maxRotationAngle > 0f && maxRotationAngle < 180f
|
||||
&& !(currentTurret is FlyTurretData flyTurret && flyTurret.IsFlying))
|
||||
{
|
||||
float baseAngle = IsFlipped ? 180f : 0f;
|
||||
// DeltaAngle 取 [-180,180] 最短差,正确处理 350°/-10° 等角度回绕
|
||||
float delta = Mathf.DeltaAngle(baseAngle, angle);
|
||||
delta = Mathf.Clamp(delta, -maxRotationAngle, maxRotationAngle);
|
||||
angle = baseAngle + delta;
|
||||
}
|
||||
|
||||
currentAngle = angle;
|
||||
|
||||
// ⭐ 两个分支(Normal / XJMH)分开处理:
|
||||
|
||||
Reference in New Issue
Block a user