83 lines
2.0 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
|