Files
aibis-dream/Assets/Scripts/SubWay/Vehicle.cs
T
2025-06-11 16:07:49 +08:00

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;
}
}
}