using System; using UnityEngine; [RequireComponent(typeof(SpriteRenderer))] [RequireComponent(typeof(BoxCollider2D))] [RequireComponent(typeof(Rigidbody2D))] public class FollowMouseWithCollision : MonoBehaviour { private SpriteRenderer spriteRenderer; private Color originalColor; private bool isColliding = false; void Start() { // 缓存 SpriteRenderer 和原始颜色 spriteRenderer = GetComponent(); originalColor = spriteRenderer.color; // 确保 Rigidbody2D 是 Kinematic Rigidbody2D rb = GetComponent(); rb.bodyType = RigidbodyType2D.Kinematic; } void Update() { // 跟随鼠标 Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); mousePos.z = 0; transform.position = mousePos; // 碰撞提示 if (isColliding) spriteRenderer.color = Color.red; // 碰撞中变红 else spriteRenderer.color = originalColor; // 恢复原色 } private void OnTriggerEnter2D(Collider2D other) { Debug.Log("开始碰撞: " + other.gameObject.name); isColliding = true; } private void OnTriggerExit2D(Collider2D other) { Debug.Log("结束碰撞: " + other.gameObject.name); isColliding = false; } private void OnTriggerStay2D(Collider2D other) { isColliding = true; } }