56 lines
1.8 KiB
C#
56 lines
1.8 KiB
C#
using System.Collections.Generic;
|
|
using DG.Tweening;
|
|
using UnityEngine;
|
|
|
|
namespace AibisDream
|
|
{
|
|
public class Vehicle : MonoBehaviour
|
|
{
|
|
public float speed;
|
|
private Vector3 _target;
|
|
private readonly List<Tween> _tweenList = new();
|
|
private int _sortingLayerId;
|
|
private int _sortingLayerOrder;
|
|
|
|
// 仅负责让轮子转起来
|
|
private void OnEnable()
|
|
{
|
|
LoadSpawnData();
|
|
|
|
var car = GetComponent<SpriteRenderer>();
|
|
car.sortingOrder = _sortingLayerOrder;
|
|
car.sortingLayerID = _sortingLayerId;
|
|
// 加载轮子
|
|
foreach (Transform wheel in transform)
|
|
{
|
|
if (!wheel.name.StartsWith("轮子")) continue;
|
|
var wheelSprite = wheel.GetComponent<SpriteRenderer>();
|
|
wheelSprite.sortingOrder = _sortingLayerOrder + 1;
|
|
wheelSprite.sortingLayerID = _sortingLayerId;
|
|
|
|
// 转动
|
|
Tween tween = wheel.DORotate(_target, 1 / Mathf.Abs(speed), RotateMode.LocalAxisAdd)
|
|
.SetEase(Ease.Linear)
|
|
.SetLoops(-1, LoopType.Incremental);
|
|
|
|
_tweenList.Add(tween);
|
|
}
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
_tweenList.ForEach(tween => tween.Kill());
|
|
_tweenList.Clear();
|
|
}
|
|
|
|
// 其他部分,主要是有关层级和方向
|
|
private void LoadSpawnData()
|
|
{
|
|
MobileObjectData data = transform.parent.GetComponent<AbsMobileObject>().mobileObjectData;
|
|
// 获取一些数据
|
|
_target = data.flipX ? new Vector3(0, 0, -360) : new Vector3(0, 0, 360);
|
|
_sortingLayerId = data.sortingLayerId;
|
|
_sortingLayerOrder = data.sortingOrder;
|
|
}
|
|
}
|
|
} |