备份CatanBuilding瘦身独立工程

This commit is contained in:
JSD\13999
2026-05-26 16:15:54 +08:00
commit 2d0e6a61b7
12001 changed files with 2431925 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace game
{
public class ToolForFollowerAndNormalPosition : OperatingToolsBase
{
[Tooltip("工具距离操作点位置, 吸尘器/水枪等 本身到吸嘴距离")]
[SerializeField]
private float m_DistanceToMouth = 0.1f;
[Tooltip("工具操作点距离操作区距离, 吸尘器/水枪等 吸嘴离地距离")]
[SerializeField]
private float m_DistanceFromMouthToGround = 0.4f;
[Tooltip("作用距离/覆盖范围")]
[SerializeField]
private float m_RangeCoverage = 0.8f;
[Tooltip("工具移动速度")]
[SerializeField]
private float m_ToolSpeed = 10f;
[Tooltip("工具移动耗时调整,按比例计算,正值为增加,负值为减少")]
[SerializeField]
private float m_ToolConsumedTimeAdjustedRatio = 0f;
public float DistanceFromMouthToGround { get => m_DistanceFromMouthToGround; }
public float RangeCoverage { get => m_RangeCoverage; }
private Vector3 m_OperatingPoint = Vector3.zero;
public Vector3 OperatingPoint { get => m_OperatingPoint; }
public void Follow(Vector3 position, Vector3 normal)
{
Vector3 targetPosition = position + normal * (m_DistanceToMouth + m_DistanceFromMouthToGround);
float distance = Vector3.Distance(targetPosition, this.transform.position);
float time = distance / m_ToolSpeed;
time += time * m_ToolConsumedTimeAdjustedRatio;
m_OperatingPoint = position + normal * m_DistanceFromMouthToGround;
this.transform.DOKill();
this.transform.DOMove(targetPosition, time).SetEase(Ease.OutQuad);
this.transform.DORotateQuaternion(Quaternion.LookRotation(-normal), time).SetEase(Ease.Linear);
}
#region Transform变换相关
public override void MoveToExhibition()
{
// 停止播放操作动画
StopPlayOperationAnimation();
// 停止播放准备动画
StopPlayPrepareAnimation();
}
#endregion
}
}