138 lines
5.5 KiB
C#
138 lines
5.5 KiB
C#
using asap.core;
|
|
using cfg;
|
|
using DG.Tweening;
|
|
using Game;
|
|
using UnityEngine;
|
|
|
|
public class FishingFlyingWhale : FishingFlyingFish
|
|
{
|
|
public float enterDelayTime = 1f;
|
|
public float rodInactiveDelay = 1.1f;
|
|
public float rodAppearDelay = 2.83f;
|
|
public float drawingDelay = 3f;//结束
|
|
public float fishSpSwimmingToMapTime = 1f;
|
|
public float spExitDelay = 4;
|
|
public float spDamageProtectionTime = 0.2f;
|
|
public Vector3 fishSpEatPoint = new Vector3(0, -3, 35);
|
|
public Vector3 fishToMouthPos = new Vector3(-1.5f, 0, -0.1f);
|
|
public Vector3 fishToMouthRot = new Vector3(0, 86, 0);
|
|
public override void StartFlying(FishingBehaviorB fishingBehavior, FishingData fishingData)
|
|
{
|
|
this.fishingBehavior = fishingBehavior;
|
|
this.fishingData = fishingData;
|
|
FishMove();
|
|
}
|
|
|
|
async void FishMove()
|
|
{
|
|
//转弯
|
|
var _fish = fishingBehavior.GetFish;
|
|
var _strugglePoint = fishSpEatPoint;
|
|
//_strugglePoint.y = _fish.transform.position.y;
|
|
Quaternion rotation = Quaternion.LookRotation(_fish.transform.position - _strugglePoint);
|
|
_fish.transform.DORotateQuaternion(rotation, 0.1f);
|
|
_fish.transform.DOMove(_strugglePoint, enterDelayTime);
|
|
await Awaiters.Seconds(enterDelayTime);
|
|
fishingBehavior.CameraToFish = false;
|
|
fishingData.mainCamera.DOLocalRotateQuaternion(Quaternion.identity, 0.5f);
|
|
fishingBehavior.FishBehaviour.transform.parent = fishingBehavior.FishComeAnimationRoot.transform;
|
|
fishingBehavior.FishBehaviour.transform.localPosition = fishToMouthPos;
|
|
fishingBehavior.FishBehaviour.transform.localEulerAngles = fishToMouthRot;
|
|
FishingPanel_Advanced.Instance?.ShowState(3);
|
|
EatFishAction();
|
|
RodMove();
|
|
//开始timeScale缩放
|
|
AniEatTimeScale();
|
|
DarknessTimeDelay();
|
|
AniExitTime();
|
|
await Awaiters.Seconds(drawingDelay);
|
|
fishingBehavior.DestroySwimFish();
|
|
fishingBehavior.RodDrawing();
|
|
fishingBehavior.SetDrawingForce(1);
|
|
GContext.Publish(new LoadFishListEvent() { isShow = true });
|
|
fishingBehavior.CameraToFish = true;
|
|
FishSwimming();
|
|
}
|
|
async void RodMove()
|
|
{
|
|
fishingBehavior.fishingRodAnimator.SetTrigger("_pulling");
|
|
GContext.Publish(ERightState.Pulling);
|
|
|
|
await Awaiters.Seconds(rodInactiveDelay);
|
|
float delay = rodAppearDelay - rodInactiveDelay;
|
|
fishingBehavior.ChangelineStartPos();
|
|
GContext.Publish(ERightState.Preparing);
|
|
await Awaiters.Seconds(delay);
|
|
fishingBehavior.IsChangelineStartPos = false;
|
|
fishingBehavior.ShowRod(true);
|
|
}
|
|
async void AniEatTimeScale()
|
|
{
|
|
var fishingBehaviorConf = fishingData.fishingBehaviorConf;
|
|
await Awaiters.Seconds(fishingBehaviorConf.timeEatStartScale);
|
|
float time = fishingBehaviorConf.timeEatEndScale - fishingBehaviorConf.timeEatStartScale;
|
|
DOTween.To(() => fishingBehaviorConf.timeEatMinScale, x => Time.timeScale = x, 1, time)
|
|
.SetEase(fishingBehaviorConf.timeEatScaleCurve);
|
|
await Awaiters.Seconds(fishingBehaviorConf.timeEatEndScale);
|
|
Time.timeScale = 1f;
|
|
}
|
|
void EatFishAction()
|
|
{
|
|
fishingBehavior.FishSwimBehaviour.gameObject.SetActive(false);
|
|
fishingBehavior.fx_fishbosscome.SetActive(false);
|
|
//await Awaiters.Seconds(eatFishActionDelay);
|
|
//大鱼停止游弋
|
|
fishingBehavior.fishCome.FishComeStop();
|
|
var _strugglePoint = fishSpEatPoint;
|
|
//_strugglePoint.y = _fish.transform.position.y;
|
|
fishingBehavior.fishCome.transform.localPosition = _strugglePoint;
|
|
fishingBehavior.FishSwimBehaviour.gameObject.SetActive(true);
|
|
fishingBehavior.fishCome.animator.Play("FishBossPullingBiteSp");
|
|
fishingBehavior.FishSwimBehaviour.PlayBite();
|
|
fishingBehavior.cameraAnimator.Play("CameraAnimationWhaleSp");
|
|
}
|
|
|
|
void FishSwimming()
|
|
{
|
|
var ver = new Vector3();
|
|
ver.y = fishingBehavior.GetFishUnderwaterOffset();
|
|
ver.z = fishingBehavior.WaitingZ();
|
|
fishingBehavior.GetFish.transform.position = fishingBehavior.FishComeAnimationRoot.transform.position;
|
|
var _strugglePoint = new Vector3(0, ver.y, ver.z);
|
|
//fishingBehavior.GetBait.transform.position = ver;
|
|
fishingBehavior.GetFish.transform.DOMove(_strugglePoint, fishSpSwimmingToMapTime).OnUpdate(
|
|
(() =>
|
|
{
|
|
fishingBehavior.SetCurFishEffectPos();
|
|
}));
|
|
fishingBehavior.FishTurn();
|
|
}
|
|
void DarknessTimeDelay()
|
|
{
|
|
//天气压黑
|
|
var _fishEatfish = GContext.container.Resolve<Tables>().TbFishEatFish.GetOrDefault(fishingData.swimFishData.EatFishID);
|
|
if (_fishEatfish != null)
|
|
{
|
|
if (_fishEatfish.IsDarkness)
|
|
{
|
|
WeatherEvent weatherEvent = new WeatherEvent() { State = 1 };
|
|
GContext.Publish(weatherEvent);
|
|
fishingData.isWeather = true;
|
|
if (weatherEvent.IsPlay)
|
|
{
|
|
GContext.Publish(new EventBGMSound("BGM_WeatherChange"));
|
|
}
|
|
}
|
|
FishingPanel_Advanced.Instance?.ShowWarning(_fishEatfish.WarningAfterEat);
|
|
}
|
|
}
|
|
async void AniExitTime()
|
|
{
|
|
await Awaiters.Seconds(spExitDelay);
|
|
fishingBehavior.StartMoveFish();
|
|
fishingBehavior.cameraAnimator.Play("Drawing01");
|
|
fishingBehavior.fishCome.animator.Play("Idle01");
|
|
GContext.Publish(new OnEatEndEvent());
|
|
}
|
|
}
|