using System.Collections; using System.Collections.Generic; using UnityEngine; public class PGem : MonoBehaviour { [SerializeField] private float m_maxSpeed; [SerializeField] private float m_pickRadius; [SerializeField] private int m_gemCount; private bool m_flying; private Vector2 m_refVel; public float GemSpawnLifeTime; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { PHomePlayer playerUnit = PHomeGameMode.main.PlayerUnit; if (!m_flying) { if (playerUnit.HasPickMagnet) { m_flying = true; } else { Vector2 playerPos = playerUnit.transform.position; Vector2 gemPos = transform.position; if (Vector2.Distance(playerPos, gemPos) < playerUnit.PickRadius) { m_flying = true; } } } // Fly to player if (m_flying && playerUnit != null) { Vector3 oldPos = transform.position; Vector2 curPos = transform.position; Vector2 targetPos = playerUnit.transform.position; Vector2 offset = targetPos - curPos; if (offset.magnitude < m_pickRadius) { PickGem(playerUnit); return; } Vector2 newPos = Vector2.SmoothDamp(curPos, targetPos, ref m_refVel, 0.2f); oldPos.x = newPos.x; oldPos.y = newPos.y; transform.position = oldPos; } } private void PickGem(PHomePlayer playerUnit) { PHomeGameMode.main.AddGem(playerUnit, m_gemCount); AudioManager.instance.PlaySingleSound(AudioManager.instance.GemCollect); Destroy(gameObject); } }