第一人称

玩家移动

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FirstPerson : MonoBehaviour
{
    public CharacterController player;
    public float speed;
    public float gravity = 9.8f;
    public Vector3 moveDirect;
    public float jumpHeight;

    private void Update()
    {
        if (player.isGrounded)
        {
            float xMove = Input.GetAxisRaw("Horizontal");
            float yMove = Input.GetAxisRaw("Vertical");
            //TransformDirection 将本地坐标转到世界坐标 方向不变 数值可能变化
            moveDirect = transform.TransformDirection(new Vector3(xMove, 0, yMove));
            if (Input.GetButtonDown("Jump"))
            {
                moveDirect.y = jumpHeight;
            }
        }
        //模拟重力
        moveDirect.y -= gravity * Time.deltaTime;
        player.Move(speed * Time.deltaTime * moveDirect);//注意:Move使用世界坐标
    }
}

相机旋转

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 相机旋转
/// </summary>
public class MouseLook : MonoBehaviour
{
    public Transform player;
    public float sensitivity = 2f;//鼠标灵敏度
    public Vector2 cameraRot;//相机x和y的欧拉角
    public Vector2 angeleLimit; //限制相机x轴的角度
    void Update()
    {
        LookRotate();
    }
    public void LookRotate()//鼠标旋转
    {

        float yRot = Input.GetAxis("Mouse X") * sensitivity;//水平移动 旋转y轴
        float xRot = Input.GetAxis("Mouse Y") * sensitivity;//竖直移动 旋转x轴

        cameraRot.x += xRot;
        cameraRot.y -= yRot;

        cameraRot.x = Mathf.Clamp(cameraRot.x, angeleLimit.x, angeleLimit.y);

        transform.rotation = Quaternion.Euler(cameraRot.x, cameraRot.y, 0);//相机旋转
        player.rotation = Quaternion.Euler(0, cameraRot.y, 0);//旋转玩家
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值