Unity2D进行鼠标点击之后,点击范围内的鱼出现躲避效果
时间: 2024-04-13 15:30:41 浏览: 118
鱼的鼠标特效
要在Unity中实现鼠标点击后,点击范围内的鱼出现躲避效果,可以通过以下步骤来实现:
1. 创建一个空的GameObject,并将其命名为"Fish"。
2. 在Fish对象上添加一个Sprite Renderer组件,并将鱼的图片作为Sprite。
3. 添加一个Rigidbody2D组件,并将其设置为Kinematic,以便我们可以通过代码控制鱼的运动。
4. 创建一个新的C#脚本,命名为"FishMovement",并将其附加到Fish对象上。
```csharp
using UnityEngine;
public class FishMovement : MonoBehaviour
{
public float speed = 2f; // 鱼的移动速度
private Vector3 targetPosition;
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
// 获取鼠标点击位置
Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
// 检查点击位置是否在鱼的范围内
if (Vector3.Distance(transform.position, mousePosition) < 1f)
{
// 计算躲避方向
Vector3 avoidDirection = (transform.position - mousePosition).normalized;
// 设置目标位置为当前位置加上躲避方向
targetPosition = transform.position + avoidDirection * 2f;
}
}
// 如果有目标位置,则向目标位置移动
if (targetPosition != Vector3.zero)
{
// 计算移动方向和距离
Vector3 direction = (targetPosition - transform.position).normalized;
float distance = Vector3.Distance(targetPosition, transform.position);
// 移动鱼
transform.Translate(direction * speed * Time.deltaTime);
// 如果鱼与目标位置之间的距离小于0.1,则重置目标位置
if (distance < 0.1f)
{
targetPosition = Vector3.zero;
}
}
}
}
```
这个脚本会在每一帧更新时,检查鼠标左键是否按下。如果按下了鼠标左键,我们会获取鼠标点击位置,并检查该位置是否在鱼的范围内(这里我们假设鱼的范围半径为1)。如果在范围内,我们会计算躲避方向,并将目标位置设置为当前位置加上躲避方向乘以一个躲避距离(这里设为2)。
然后,在每一帧更新时,如果有目标位置,我们会计算移动方向和距离,并使用Translate方法将鱼移动到目标位置。如果鱼与目标位置之间的距离小于0.1,我们会重置目标位置。
记得将FishMovement脚本附加到Fish对象上,然后你就可以在Unity中运行场景。当你点击鼠标左键时,如果点击范围内有鱼,它们将会躲避你的点击位置。
阅读全文