首页 > 其他分享 >unity利用Rigibody实现第一人称移动

unity利用Rigibody实现第一人称移动

时间:2023-05-03 22:11:47浏览次数:35  
标签:xRotation rb float 旋转 unity 第一人称 using public Rigibody

1. CameraRotation脚本,将它给MainCamera,实现上下视角旋转

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

public class CameraRotation : MonoBehaviour
{
    [Tooltip("鼠标灵敏度")]
    public float RotateSpeed = 5f;
    //x轴的旋转角度
    float xRotation = 0f;
    private void Awake() {
        //将玩家脚本上的旋转角度设为设置的旋转角度
        Player.tmp_rotateSpeed = RotateSpeed;
    }
    void Update()
    {
        //获取鼠标y轴上的移动量
        float mouseY = Input.GetAxis("Mouse Y");
        //将x轴旋转,注意是减mouseY,同时乘旋转速度
        xRotation -= mouseY * RotateSpeed;
        //将x轴的角度限定在一定范围内
        xRotation = Mathf.Clamp(xRotation, -90, 90);
        //设置localRotation,即旋转角度
        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
    }
}



2. Player脚本,将它给角色,它会自动添加组件

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
public class Player : MonoBehaviour
{
    //玩家的旋转角度,取决于CameraRotation上的RotateSpeed。
    public static float tmp_rotateSpeed;
    [Tooltip("旋转速度")]
    public float speed = 5f;
    [Tooltip("跳跃高度")]
    public float jumpForce = 5f;
    //玩家身上的刚体组件
    private Rigidbody rb;

    void Start()
    {
        //获取玩家的刚体组件
        rb = GetComponent<Rigidbody>();
    }

    void Update()
    {
        //获取鼠标在x轴的移动量
        float mouseX = Input.GetAxis("Mouse X");
        //根据移动量旋转
        transform.Rotate(Vector3.up, mouseX * Player.tmp_rotateSpeed);

        //获取WASD键的输入
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");

        //移动方向和速度
        Vector3 movement = (transform.forward * moveVertical * Time.deltaTime + 
        transform.right * moveHorizontal * Time.deltaTime) * speed;

        //根据计算出的movement移动
        rb.Move(rb.position + movement, transform.localRotation);

        //如果按下空格键,给刚体向上力,即跳跃
        if (Input.GetKeyDown(KeyCode.Space))
        {
            rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
        }
    }
}

标签:xRotation,rb,float,旋转,unity,第一人称,using,public,Rigibody
From: https://www.cnblogs.com/ktshuchong/p/17369782.html

相关文章

  • unity
    将物体变为受重力影响的物理对象给对象添加组件:2D刚体(Rigidbody2D)物体会变成物理物体,有重力,会掉落让物体能与其他物体互动给物体添加碰撞器(Collider2D)碰撞器有绿色的轮廓,使用offset可移动轮廓脚本本质是让我们自定义自己的组件Start()用于在启用此脚本后将立即运行一次......
  • unity发布到4399的webgl模式问题:FRAMEWORK.JS中的WEBREQUEST_SEND括号内的函数(不能有
    在发布4399的时候,之前遇到过这个问题,解决方法当然就是删除这个函数啦。步骤也很简单,但是刚开始摸不着头脑搞了好久,最后发现发布的时候有个加密选项,选择不加密,后面build的文件里面就可以进行打开修改,按照要求修改函数即可。......
  • unity 把本地图片批量添加到 物体的脚本上 Texture 类型
    privatevoidAwake(){stringfilePath=System.Environment.CurrentDirectory+"/专利/";if(Directory.Exists(filePath)){//判断这个路径是否存在DirectoryInfodirection=newDirectoryInfo(filePath);floders=directi......
  • Unity的Animator中Transition有延迟的问题
    洪流学堂,让你快人几步。洪流学堂公众号回复space,下载本文用到的卡通太空主题资源。小新:“智哥,我遇到一个动画系统中问题,不知道是Unity的BUG,还是我的使用方式不对。”大智:“说来听听什么问题?”小新:“我的需求是这样的,我有一个模型,做了3段路径动画,想要每次点击模型的时候能够切换到下......
  • Unity中Android API 28之后无法HTTP请求
    本文节选自洪流学堂公众号技术专栏《大话Unity2019》,未经允许不可转载。洪流学堂公众号回复log,获取最新版运行时查看日志的工具。小新:“最近我升级到AndroidAPILevel28之后,发现发布的安卓包,网络请求都不通了,这是咋回事啊?”大智:“遇到这种问题,调试的时候首先去看日志,你研究运行日......
  • Unity 2019.1 中文更新日志速览版
    洪流学堂微信公众号。洪流学堂,学Unity快人几步Unity2019.1已经正式发布,快来看看一些核心新功能吧!完整版的中文更新日志可在洪流学堂微信公众号回复2019.1获取。今年Unity的第一个技术版本——Unity2019.1已经发布。它包括许多新的可用于生产的功能,例如BurstCompiler,Lightweight......
  • 【专栏精选】Unity热更新之ILRuntime
    本文节选自洪流学堂公众号技术专栏《大话Unity2019》,未经允许不可转载。洪流学堂公众号回复专栏,查看更多专栏文章。洪流学堂,让你快人几步。你好,我是郑洪智。小新:“热更新真的是打开了一片天啊,现在我越发感觉热更新能做的事情太多了。之前做了一个项目,每次打包都好花费半小时,如果有......
  • 【专栏精选】Unity中的HTTP网络通信
    本文节选自洪流学堂公众号技术专栏《大话Unity2019》,未经允许不可转载。洪流学堂公众号回复专栏,查看更多专栏文章。洪流学堂,让你快人几步。你好,我是郑洪智。大智:“小新,今天开始,我们来学习Unity中的HTTP通信。”小新:“为啥不先学Tcp和Udp呢?这俩不是基础么?”大智:“虽然这俩是基础,但......
  • Unity开发《一起来捉妖》教程 | 1.陀螺仪控制相机
    洪流学堂,让你快人几步。你好,我是郑洪智。洪流学堂公众号回复捉妖,可以获取本教程的源码工程。大智:“小新,你小子最近是不是谈恋爱了,怎么天天往外跑?”小新:“嘿嘿”大智:“嘿嘿你个鬼啊,从实招来,是不是要请我吃饭了?”小新:“最近有一款非常火的AR游戏,叫《一起来捉妖》,你玩了没?”大智:“听说......
  • [Unity脚本运行时更新]C#7.1新特性
    洪流学堂微信公众号。本文是该系列《Unity脚本运行时更新带来了什么?》的第6篇。洪流学堂公众号回复runtime,获取本系列所有文章。Unity2017-2018.2中的4.x运行时已经支持到C#6,之前的文章已经介绍完毕。Unity2018.3将支持到C#7.3,今天我们先来看看C#7.1新特性能给代码带来什么吧,不过......