114 lines
2.9 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|