Unity之第三人称俯视聚焦角色视角
功能描述
摄像机以第三人称视角俯瞰角色,可以进行自由俯瞰观察角色和游戏场景。
具体描述
玩家点击回合中的一名角色后,摄像机移动到与角色保持一定的距离和角度俯瞰角色,长按鼠标右键可以进行自由更改视角,但不能够移动摄像机位置
功能实现
步骤分解
- 点击角色实现摄像机移动并保持一定距离
- 长按右键可以只有转动视角
预设一个合适的摄像机高度,然后摄像机在这个高度向角色所在方向平移,并且摄像机摄像方向是面朝角色。
当前选择一个距离:14f
public void Move()
{
targetPosition = gameObject1.transform.position;
// 计算方向向量
Vector3 direction = (targetPosition - transform.position).normalized;
direction.y = 0;
// 计算到目标的距离
float distanceToTarget = Vector3.Distance(transform.position, targetPosition);
// 如果距离大于指定的停止距离,则继续移动
if (distanceToTarget > stoppingDistance)
{
// 移动游戏物体
transform.position += direction * moveSpeed * Time.deltaTime;
}
}
关于视角移动
public void CameraRotate()
{
// 检测鼠标右键是否被按下
if (Input.GetMouseButtonDown(1))
{
isRotating = true;
}
// 当鼠标右键被按住时
if (isRotating)
{
// 获取鼠标在水平和垂直方向上的移动增量
float mouseX = Input.GetAxis("Mouse X");
float mouseY = Input.GetAxis("Mouse Y");
// 根据移动增量旋转摄像机
transform.Rotate(Vector3.up, mouseX * rotationSpeed * Time.deltaTime, Space.World);
transform.Rotate(Vector3.left, mouseY * rotationSpeed * Time.deltaTime, Space.Self);
}
// 当鼠标右键释放时停止旋转
if (Input.GetMouseButtonUp(1))
{
isRotating = false;
}
}