unity实现飞机跟随鼠标移动
时间: 2023-07-11 07:52:50 浏览: 122
实现飞机跟随鼠标移动的方法如下:
1. 获取鼠标在屏幕上的位置:
```csharp
Vector3 mousePos = Input.mousePosition;
```
2. 将鼠标位置转换为世界坐标:
```csharp
Vector3 targetPos = Camera.main.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, 10));
```
这里假设相机的位置为(0,0,-10),因为屏幕坐标是二维的,所以需要将z设置为一个正值,这里设置为10。
3. 计算飞机需要转向的角度:
```csharp
Vector3 direction = targetPos - transform.position;
float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
Quaternion rotation = Quaternion.AngleAxis(angle, Vector3.forward);
```
这里使用了Atan2函数来计算角度,然后使用AngleAxis函数创建一个旋转矩阵。
4. 将飞机的旋转角度设置为计算出来的角度:
```csharp
transform.rotation = rotation;
```
5. 将飞机的位置设置为鼠标位置:
```csharp
transform.position = targetPos;
```
完整代码如下:
```csharp
using UnityEngine;
public class FollowMouse : MonoBehaviour
{
void Update()
{
Vector3 mousePos = Input.mousePosition;
Vector3 targetPos = Camera.main.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, 10));
Vector3 direction = targetPos - transform.position;
float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
Quaternion rotation = Quaternion.AngleAxis(angle, Vector3.forward);
transform.rotation = rotation;
transform.position = targetPos;
}
}
```
这样就可以实现飞机跟随鼠标移动并且朝向鼠标的方向了。需要注意的是,如果飞机的模型朝向不是向右的,需要根据具体情况进行角度的调整。
阅读全文