Game_CodeMM/Assets/Scenes/Backup/FollowMouseWithCollision.cs

55 lines
1.4 KiB
C#
Raw Permalink Normal View History

2025-10-08 16:31:53 +08:00
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<SpriteRenderer>();
originalColor = spriteRenderer.color;
// 确保 Rigidbody2D 是 Kinematic
Rigidbody2D rb = GetComponent<Rigidbody2D>();
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;
}
}