Unity简单的摄像机控制代码,第三人称,第一人称,场景漫游

在Unity中,摄像机控制是一个基本的功能,它允许玩家从第一人称或第三人称视角查看游戏世界,或者自由地漫游场景。以下是一些简单的摄像机控制代码示例:

第一人称摄像机控制

对于第一人称摄像机控制,通常将摄像机绑定到玩家对象上,并通过输入来控制玩家对象的移动和旋转,从而间接控制摄像机的位置和朝向。

 

csharp复制代码

using UnityEngine;
public class FirstPersonCameraControl : MonoBehaviour
{
public float speed = 6.0f;
public float rotationSpeed = 100.0f;
private void Update()
{
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(horizontal, 0.0f, vertical);
transform.Translate(movement * speed * Time.deltaTime);
float mouseX = Input.GetAxis("Mouse X");
float mouseY = Input.GetAxis("Mouse Y");
transform.Rotate(0f, mouseX * rotationSpeed * Time.deltaTime, 0f);
}
}

这段代码将摄像机绑定到玩家对象上,通过Input.GetAxis获取水平和垂直轴上的输入来控制移动,并通过鼠标X轴输入来控制摄像机的水平旋转。

第三人称摄像机控制

对于第三人称摄像机控制,摄像机通常与玩家对象保持一定的距离和角度。摄像机的位置和朝向可以基于玩家对象的位置和朝向来计算。

 

csharp复制代码

using UnityEngine;
public class ThirdPersonCameraControl : MonoBehaviour
{
public Transform target; // 玩家对象
public Vector3 offset; // 摄像机与玩家对象之间的偏移量
public float rotationSpeed = 100.0f;
private void Update()
{
// 保持摄像机与玩家对象之间的相对位置
transform.position = target.position + offset;
// 摄像机跟随玩家对象的旋转
float mouseX = Input.GetAxis("Mouse X");
Quaternion rotation = Quaternion.AngleAxis(mouseX * rotationSpeed * Time.deltaTime, Vector3.up);
transform.rotation = rotation * Quaternion.LookRotation(target.position - transform.position);
}
}

这段代码设置了一个目标(通常是玩家对象),并定义了一个偏移量,该偏移量决定了摄像机相对于玩家的位置和朝向。摄像机将跟随玩家对象移动,并可以通过鼠标输入来旋转摄像机以查看周围的环境。

场景漫游

对于场景漫游,你可能想要一个自由移动的摄像机,可以通过键盘或鼠标来控制摄像机的移动和旋转。

 

csharp复制代码

using UnityEngine;
public class FreeCameraControl : MonoBehaviour
{
public float moveSpeed = 5.0f;
public float rotationSpeed = 100.0f;
private void Update()
{
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(horizontal, 0.0f, vertical);
transform.Translate(movement * moveSpeed * Time.deltaTime);
if (Input.GetMouseButtonDown(1)) // 右键按下时开始旋转摄像机
{
float mouseX = Input.GetAxis("Mouse X");
float mouseY = Input.GetAxis("Mouse Y");
transform.Rotate(Vector3.up, mouseX * rotationSpeed * Time.deltaTime);
transform.Rotate(Vector3.right, mouseY * rotationSpeed * Time.deltaTime);
}
}
}

在这个例子中,摄像机可以通过WSAD键移动,并通过鼠标右键旋转。这允许用户自由地探索场景。

记得将这些脚本分别附加到对应的摄像机对象上,并根据需要调整公共变量以匹配你的游戏设置。此外,这些代码示例是基本的实现,可能需要根据你的具体需求进行扩展和优化。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值