Unity2D 利用代码实现鼠标点击物体之后,点击范围内的物体进行躲避效果
时间: 2024-04-14 18:26:57 浏览: 212
Unity物体遮罩插件.rar
5星 · 资源好评率100%
要在Unity中实现鼠标点击物体后,点击范围内的物体进行躲避效果,可以通过以下步骤来实现:
1. 创建一个空的GameObject,并将其命名为"ClickManager"。
2. 创建一个新的C#脚本,命名为"ClickManager",并将其附加到"ClickManager"对象上。
```csharp
using UnityEngine;
public class ClickManager : MonoBehaviour
{
public float avoidanceDistance = 2f; // 躲避距离
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
// 获取鼠标点击位置
Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Collider2D[] colliders = Physics2D.OverlapCircleAll(mousePosition, avoidanceDistance);
foreach (Collider2D collider in colliders)
{
// 检查是否是鱼的碰撞器
FishMovement fish = collider.GetComponent<FishMovement>();
if (fish != null)
{
// 计算躲避方向
Vector3 avoidDirection = (collider.transform.position - mousePosition).normalized;
// 设置目标位置为当前位置加上躲避方向
fish.SetTargetPosition(collider.transform.position + avoidDirection * avoidanceDistance);
}
}
}
}
}
```
这个脚本会在每一帧更新时,检查鼠标左键是否按下。如果按下了鼠标左键,我们会获取鼠标点击位置,并使用OverlapCircleAll方法获取点击范围内的所有碰撞器。
然后,我们遍历每个碰撞器,检查是否是鱼的碰撞器。如果是鱼的碰撞器,我们会计算躲避方向,并调用鱼的SetTargetPosition方法将目标位置设置为当前位置加上躲避方向乘以一个躲避距离。
接下来,在FishMovement脚本中添加一个公共方法SetTargetPosition:
```csharp
public void SetTargetPosition(Vector3 targetPos)
{
targetPosition = targetPos;
}
```
这个方法用于设置鱼的目标位置。
记得将"ClickManager"对象上的"ClickManager"脚本附加到场景中所有需要躲避效果的物体上,例如鱼。然后你就可以在Unity中运行场景。当你点击鼠标左键时,如果点击范围内有物体(如鱼),它们将会躲避你的点击位置。
阅读全文