备份CatanBuilding瘦身独立工程
This commit is contained in:
118
Assets/Scripts/GampPlay/FishingB/FishCome.cs
Normal file
118
Assets/Scripts/GampPlay/FishingB/FishCome.cs
Normal file
@@ -0,0 +1,118 @@
|
||||
using DG.Tweening;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AddressableAssets;
|
||||
using UnityEngine.Splines;
|
||||
|
||||
public class FishCome : MonoBehaviour
|
||||
{
|
||||
public Animator animator;
|
||||
public SplineAnimate ssplineAnimate;
|
||||
public Transform FishAnimationRoot;
|
||||
GameObject splinesRoot;
|
||||
FishComeSplines fishComeSplines;
|
||||
float posY;
|
||||
private void Awake()
|
||||
{
|
||||
ssplineAnimate.enabled = false;
|
||||
}
|
||||
public async void LoadSplines(string splinesRootName)
|
||||
{
|
||||
splinesRoot = await Addressables.InstantiateAsync(splinesRootName, transform.parent).Task;
|
||||
splinesRoot.transform.localPosition = Vector3.up * posY;
|
||||
fishComeSplines = splinesRoot.GetComponent<FishComeSplines>();
|
||||
}
|
||||
public void SetPosY(float y)
|
||||
{
|
||||
posY = y;
|
||||
var pos = transform.position;
|
||||
transform.position = new Vector3(pos.x, y, pos.z);
|
||||
splinesRoot.transform.position = new Vector3(0, y, 0);
|
||||
}
|
||||
public void FishComeMove(float speed)
|
||||
{
|
||||
if (fishComeSplines != null)
|
||||
{
|
||||
SplineContainer[] splineContainers = fishComeSplines.splineContainers;
|
||||
if (splineContainers == null || splineContainers.Length < 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
ssplineAnimate.MaxSpeed = speed;
|
||||
ssplineAnimate.Container = splineContainers[Random.Range(0, splineContainers.Length)];
|
||||
ssplineAnimate.enabled = true;
|
||||
ssplineAnimate.Restart(true);
|
||||
ssplineAnimate.Play();
|
||||
}
|
||||
}
|
||||
public float UIEatMove(float speed, SplineContainer splineContainer)
|
||||
{
|
||||
ssplineAnimate.MaxSpeed = speed;
|
||||
//SplineContainer splineContainer = UIEatSplines[Random.Range(0, UIEatSplines.Length)];
|
||||
ssplineAnimate.Container = splineContainer;
|
||||
ssplineAnimate.enabled = true;
|
||||
ssplineAnimate.Restart(false);
|
||||
ssplineAnimate.Play();
|
||||
return splineContainer.CalculateLength() / speed;
|
||||
}
|
||||
public async Task FishEatMove(float speed)
|
||||
{
|
||||
if (fishComeSplines == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
SplineContainer[] UIEatSplines = fishComeSplines.UIEatSplines;
|
||||
if (UIEatSplines == null || UIEatSplines.Length < 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
SplineContainer splineContainer;
|
||||
if (ssplineAnimate.IsPlaying)
|
||||
{
|
||||
FishComeStop();
|
||||
Vector3 position = transform.position;
|
||||
splineContainer = UIEatSplines[0];
|
||||
Spline spline = splineContainer[0];
|
||||
Vector3 initialPosition = spline[0].Position;
|
||||
float distance = Vector3.Distance(initialPosition, position);
|
||||
SplineContainer splineContainer1;
|
||||
Spline spline1;
|
||||
Vector3 initialPosition1;
|
||||
float distance1;
|
||||
for (int i = 1; i < UIEatSplines.Length; i++)
|
||||
{
|
||||
splineContainer1 = UIEatSplines[i];
|
||||
spline1 = splineContainer1[0];
|
||||
initialPosition1 = spline1[0].Position;
|
||||
distance1 = Vector3.Distance(initialPosition1, position);
|
||||
if (distance1 < distance)
|
||||
{
|
||||
distance = distance1;
|
||||
splineContainer = splineContainer1;
|
||||
initialPosition = initialPosition1;
|
||||
}
|
||||
}
|
||||
initialPosition += fishComeSplines.transform.position;
|
||||
Quaternion rotation11 = Quaternion.LookRotation(transform.position - initialPosition);
|
||||
float time11 = distance / speed;
|
||||
transform.DORotateQuaternion(rotation11, 0.1f);
|
||||
transform.DOLocalMove(initialPosition, time11);
|
||||
await new WaitForSeconds(time11);
|
||||
}
|
||||
else
|
||||
{
|
||||
splineContainer = UIEatSplines[Random.Range(0, UIEatSplines.Length)];
|
||||
}
|
||||
float time = UIEatMove(speed, splineContainer);
|
||||
if (time > 4)
|
||||
{
|
||||
time = 4;
|
||||
}
|
||||
await new WaitForSeconds(time);
|
||||
}
|
||||
public void FishComeStop()
|
||||
{
|
||||
animator.Play("Idle01");
|
||||
ssplineAnimate.enabled = false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user