备份CatanBuilding瘦身独立工程
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user