帮我写一份unity2D摄像头跟着鼠标移动的C#代码
时间: 2023-08-31 14:31:44 浏览: 147
### 回答1:
我可以给你一些参考代码: using UnityEngine;
public class FollowMouse : MonoBehaviour {
public float speed = 1;
void Update() {
Vector3 mousePosition = Input.mousePosition;
mousePosition = Camera.main.ScreenToWorldPoint(mousePosition);
Vector2 direction = new Vector2(mousePosition.x - transform.position.x, mousePosition.y - transform.position.y);
transform.up = direction;
transform.position = Vector2.MoveTowards(transform.position, mousePosition, speed * Time.deltaTime);
}
}
### 回答2:
当鼠标移动时,Unity 2D摄像机跟随鼠标进行移动的C#代码如下:
首先,我们需要给摄像机添加一个C#脚本。在Unity中,创建一个新的C#脚本并将其附加到摄像机对象上。
```C#
using UnityEngine;
public class CameraFollow : MonoBehaviour
{
public Transform target; // 要跟随的目标对象
public float smoothing = 5f; // 移动的平滑度
private Vector3 offset; // 摄像机与目标对象之间的距离
void Start()
{
offset = transform.position - target.position; // 计算摄像机与目标对象之间的距离
}
void FixedUpdate()
{
Vector3 targetPosition = target.position + offset; // 计算摄像机应该移动到的目标位置
transform.position = Vector3.Lerp(transform.position, targetPosition, smoothing * Time.deltaTime); // 使用插值平滑移动摄像机
}
}
```
在脚本中,我们首先定义了一个公共变量target,用于引用要跟随的目标对象(鼠标)。我们还定义了一个用于控制移动平滑度的公共变量smoothing。
在Start函数中,我们计算出摄像机与目标对象之间的初始距离,并将其存储在offset变量中。
在FixedUpdate函数中,我们使用目标位置和偏移量来计算摄像机应该移动到的目标位置。然后,我们使用Lerp函数在当前摄像机位置和目标位置之间进行插值,从而平滑地移动摄像机。插值函数的第三个参数是一个控制移动速度的倍率,我们使用smoothing乘以Time.deltaTime来使移动平滑且与帧速率无关。
最后,我们将这个脚本附加到摄像机对象上,并将要跟随鼠标的目标对象分配给target变量。当鼠标移动时,摄像机会平滑地跟随鼠标的位置进行移动。
### 回答3:
下面是一个简单的Unity 2D摄像头跟随鼠标移动的C#脚本:
```c#
using UnityEngine;
public class CameraFollow : MonoBehaviour
{
// 定义速度变量,用于控制相机移动的速度
public float cameraSpeed = 5f;
// 定义一个缩放因子,用于控制相机的缩放速度
public float zoomSpeed = 1f;
void Update()
{
// 获取鼠标的位置
Vector3 mousePosition = Input.mousePosition;
// 将鼠标的屏幕坐标转换为世界坐标
Vector3 mouseWorldPosition = Camera.main.ScreenToWorldPoint(mousePosition);
// 计算相机移动的目标位置,保持相机的Z轴不变
Vector3 targetPosition = new Vector3(mouseWorldPosition.x, mouseWorldPosition.y, transform.position.z);
// 使用Lerp方法使相机平滑跟随鼠标
transform.position = Vector3.Lerp(transform.position, targetPosition, cameraSpeed * Time.deltaTime);
// 相机缩放
float scrollWheelInput = Input.GetAxis("Mouse ScrollWheel");
Camera.main.orthographicSize -= scrollWheelInput * zoomSpeed * Time.deltaTime;
}
}
```
这个脚本首先定义了两个公共变量`cameraSpeed`和`zoomSpeed`,用于控制相机的移动速度和缩放速度。在`Update`方法中,通过`Input.mousePosition`获取鼠标在屏幕上的位置,然后使用`Camera.main.ScreenToWorldPoint`方法将其转换为世界坐标。接下来,计算相机移动的目标位置,通过`Lerp`方法使相机平滑地跟随鼠标移动。同时,根据鼠标滚轮的输入,调整相机的缩放大小。
将此脚本附加到Unity场景中的相机对象上,就能实现相机跟随鼠标移动的效果。
阅读全文