Files
aibis-dream/Assets/Scripts/MiniGame/Gear.cs
T
2024-08-19 01:28:50 +08:00

83 lines
2.0 KiB
C#

using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace AibisDream
{
public class Gear : MonoBehaviour, IMoveable
{
[SerializeField]
public GearModel data;
public GearModel Data
{
get { return data; }
set
{
data = value;
InitGearModel(data);
}
}
private GearController gearController;
private CircleCollider2D circleCollider;
private SpriteRenderer spriteRenderer;
public Shaft targetShaft;
private void Awake()
{
gearController = transform.parent.parent.GetComponent<GearController>();
circleCollider = GetComponent<CircleCollider2D>();
spriteRenderer = GetComponent<SpriteRenderer>();
// 给齿轮赋值
if (data != null)
{
InitGearModel(data);
}
}
/// <summary>
/// 设置齿轮信息
/// </summary>
/// <param name="gearModel">齿轮信息</param>
public void InitGearModel(GearModel gearModel)
{
// 给齿轮赋值
spriteRenderer.sprite = Resources.Load<Sprite>(gearModel.spriteName);
circleCollider.radius = gearModel.radius;
}
public void StartMove()
{
transform.DOPause();
}
public void StopMove()
{
if (targetShaft != null)
{
Debug.Log(targetShaft.name);
transform.position = targetShaft.transform.position;
targetShaft.PlugInGear(this);
}
}
public void Move(Vector2 targetPos)
{
transform.position = targetPos;
targetShaft = CheckTargetShaft();
}
private Shaft CheckTargetShaft()
{
return gearController.CheckClosestShaft(transform.position, data.radius);
}
}
}