Files
5.24BuYu/Assets/MyGame/aa/Game/YYSC/Monster/Scripts/YYSCMonsterControl.cs
T
2026-05-08 20:44:54 +08:00

114 lines
2.9 KiB
C#

using Assets.MyGame.Scripts.Net.APIResponses.Enum;
using Spine.Unity;
using UnityEngine;
public class YYSCMonsterControl : MonsterContral
{
public SkeletonAnimation skeletonAnimation;
public SpineMovePlayer spineMovePlayer;
public float startOffsetX = 100f;
public float moveSpeed = 2f;
[Range(0f, 1f)]
public float minY01 = 0.2f;
[Range(0f, 1f)]
public float maxY01 = 0.8f;
[Range(0f, 10f)]
public float Size = 1;
private Vector3 targetPos;
private Vector3 startPos;
private bool isMoveLeftToRight = false;
public override void Awake()
{
base.Awake();
transform.localScale *= Size;
if (skeletonAnimation == null)
skeletonAnimation = GetComponent<SkeletonAnimation>();
spineMovePlayer = new SpineMovePlayer();
spineMovePlayer.skeleton = skeletonAnimation;
spineMovePlayer.Init();
}
public override void Init(string pathId, float time, bool isyuzhen = false, string yzID = "")
{
string moveName = spineMovePlayer.PlayMove().ToLower();
float screenW = Screen.width;
float screenH = Screen.height;
// 0-1 随机 → 像素
float randomY01 = Random.Range(minY01, maxY01);
float randomY = randomY01 * screenH;
// 转世界坐标
Vector3 worldLeft = Camera.main.ScreenToWorldPoint(new Vector3(-startOffsetX, randomY, 10));
Vector3 worldRight = Camera.main.ScreenToWorldPoint(new Vector3(screenW + startOffsetX, randomY, 10));
if (moveName == "move")
{
isMoveLeftToRight = true;
startPos = worldLeft;
targetPos = worldRight;
}
else if (moveName == "walk")
{
isMoveLeftToRight = false;
startPos = worldRight;
targetPos = worldLeft;
}
else
{
isMoveLeftToRight = true;
startPos = worldLeft;
targetPos = worldRight;
}
transform.position = startPos;
// 设置起始位置
transform.position = startPos;
// ---------------- 分层逻辑 ----------------
// y 越小层越高,每 0.1 一层
float y = startPos.y;
int sortingOrder = Mathf.FloorToInt(-(y / 0.1f));
// 设置 Spine 的 SortingOrder
var renderer = skeletonAnimation.GetComponent<MeshRenderer>();
if (renderer != null)
{
renderer.sortingOrder = sortingOrder;
}
fishenum = (FishTypeEnum)monsterData.fishTypeConfig.fishType;
}
public override void OnEnable()
{
base.OnEnable();
}
void Update()
{
transform.position = Vector3.MoveTowards(
transform.position,
targetPos,
moveSpeed * Time.deltaTime
);
if (Vector3.Distance(transform.position, targetPos) < 0.1f)
{
CreateFishManager.Instance.Id_DieFish_NotFX(guid);
}
}
}