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(); circleCollider = GetComponent(); spriteRenderer = GetComponent(); // 给齿轮赋值 if (data != null) { InitGearModel(data); } } /// /// 设置齿轮信息 /// /// 齿轮信息 public void InitGearModel(GearModel gearModel) { // 给齿轮赋值 spriteRenderer.sprite = Resources.Load(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); } } }