U3D之摄像机不同视角的方法

U3D摄像机视角

U3D的可以通过设置摄像机来实现第一人称,第三人称等不同游戏视角。

1第一人称视角

四元数转化成欧拉角 Vector3 v3=transform.rotation.eulerAngles;
欧拉角转换成四元数 Quaternion rotation = Quaternion.Euler(v3);

需要实现的效果:鼠标上下左右移动镜头跟着移动;人物移动和跳跃(这里我们人物移动使用的是CharacterController组件的Move和SimpleMove方法);
看到的视野
在这里插入图片描述

//player.cs   人物移动代码
//使用CharacterController组件控制人物移动,simpleMove和Move两种方法的区别是:Move需要自己定义重力,如下:
using UnityEngine;
using System.Collections;

/// <summary>
/// CharacterController控制移动
/// 1:SimpleMove(自动应用重力效果)
/// 2:Move(不会应用重力效果,需要自己去实现)
/// </summary>
public class PlayerMove : MonoBehaviour {
   
private CharacterController cc;//角色控制器,控制物体的移动
private float speed = 4.0f;//移动速度
private float gravity = 10.0f;//重力
private Vector3 moveDir = Vector3.zero;//移动方向
void Start () 
{
   
   cc = this.GetComponent<CharacterController>();
}

void Update () 
{
   
   //模拟重力效果
   //一开始y方向速度为正,表示再上升即跳起来;当y为负时,开始下降,且下降速度越来越快
   if (moveDir.y > -gravity)
   {
   
       moveDir.y -= gravity * Time.deltaTime;
       print(moveDir);
   }
   cc.Move(moveDir * Time.deltaTime);//首先必須保證moveDir为负数,不能为0,只有是负数,才能算是isGrounded
   if (cc.isGrounded)//在地上
   {
   
       if (Input.GetKeyDown(KeyCode.Space))//按空格起跳
       {
   
           moveDir.y = speed;
       }
       else
       {
   
           float h = Input.GetAxis("Horizontal")*speed;
           float v = Input.GetAxis("Vertical")*speed;
           Vector3 dir = new Vector3(h, 0, v);//水平面方向的移动
           dir *= speed;
           if (Input.GetKey(KeyCode.LeftShift))
           {
   
               dir *= 2;
           }
           //cc.SimpleMove(transform.TransformDirection(dir));//不需要乘以deltaTime,把当前方向转换到世界空间中
           cc.Move(transform.TransformDirection(dir) * Time.deltaTime);//需要乘以deltaTime
       }
   }
   else {
   //在空中的运动状态控制
       if (Input.GetKey("w"))
       {
   
           Vector3 zDir 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值