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);
}
}
}

unity利用Rigibody实现第一人称移动的更多相关文章

  1. unity中制作模拟第一人称视角下的指南针

    private int zRotation; public GameObject obj; public void Update() { //obj = GameObject.Find("C ...

  2. unity中自制模拟第一人称视角

    public float sensitivityX = 5f; public float sensitivityY = 5f; public float sensitivetyKeyBoard = 0 ...

  3. 开发一个最简单的Cardboard虚拟现实应用(四)做一个Cardboard第一人称控制器

    [开源互助-原创文章,转载请说明出处]第三帖中已经创建了一个cardboard自带的demo应用,但它是不能移动的,玩家只能站在原地,通过头部转动来观察四周,除此之外,玩家并没有更多的手段与游戏场景进 ...

  4. 【Unity3D】Unity自带组件—完成第一人称人物控制

    1.导入unity自带的Character Controllers包 2.可以看到First Person Controller组件的构成 Mouse Look() : 随鼠标的移动而使所属物体发生旋 ...

  5. 关于Unity中FPS第一人称射击类游戏制作(专题十)

    当前Unity最新版本5.6.3f1,我使用的是5.5.1f1 场景搭建 1: 导入人物模型, 手持一把枪;2: 导入碎片模型;3: 创建一个平面;4: 创建一个障碍物;5: 导入人物模型;6: 配置 ...

  6. Unity——第一人称控制器的实现

    Unity--第一人称控制器的实现 一.功能描述 在一个场景中实现人物的前后左右移动和跳跃功能:其中前后左右移动通过W.A.S.D方向键实现,跳跃功能通过空格键实现,并且考虑到重力作用,来调节跳跃功能 ...

  7. Opengl绘制我们的小屋(二)第一人称漫游

    这章我们先讲第一人称漫游的实现.在openTK里,我们用函数Matrix4.LookAt(caram.Eye,caram.Target,Vector3.UnitY)来放置摄像机,其中三个参数分别与摄像 ...

  8. 【转】265行JavaScript代码的第一人称3D H5游戏Demo

    译文:http://blog.jobbole.com/70956/ 原文:http://www.playfuljs.com/a-first-person-engine-in-265-lines/ 这是 ...

  9. 如何使用threejs实现第一人称视角的移动

    在数据可视化领域利用webgl来创建三维场景或VR已经越来越普遍,各种开发框架也应运而生.今天我们就通过最基本的threejs来完成第一人称视角的场景巡检功能.如果你是一位threejs的初学者或正打 ...

  10. unity3d学习笔记(一) 第一人称视角实现和倒计时实现

    unity3d学习笔记(一) 第一人称视角实现和倒计时实现 1. 第一人称视角 (1)让mainCamera和player(视角对象)同步在一起 因为我们的player是生成的,所以不能把mainCa ...

随机推荐

  1. Redis核心技术与实践 02 | 数据结构:快速的Redis有哪些慢操作?

    原文地址:https://time.geekbang.org/column/article/268262 博客地址:http://njpkhuan.cn/archives/redis-he-xin-j ...

  2. JAVA小白找工作必备建议

    如果您是一名刚入门的JAVA小白,正在寻求工作机会,那么恭喜您来对地方!本文将为您提供一些建议,帮助您在求职过程中更好地展现自己的优势和准备迎接新的挑战. 1.基础知识打牢 在找工作前,务必确保您对J ...

  3. 洛谷 T356695 文字处理软件(重置版)

    很简单了啊! 说普及- 我都不信 作者(也就是我)链接:https://www.luogu.com.cn/problem/T356695 好好想想!!!! 题目! 文字处理软件(重置版) 题目背景 A ...

  4. asp.net core之Startup

    Startup介绍 Startup是Asp.net Core的应用启动入口.在.NET5及之前一般会使用startup.cs类进行程序初始化构造.如下: public class Startup { ...

  5. Linux中的进程页表

    是什么 进程页表是用于管理进程虚拟地址空间和物理内存之间映射关系的数据结构.它记录了进程中每个虚拟页对应的物理页的信息. 什么作用 进程使用进程页表的方式是通过虚拟地址访问内存.当进程访问一个虚拟地址 ...

  6. html中的一些常用标签与标签属性

    label for属性 定义和用法 for 属性规定 label 与哪个表单元素绑定. <span> <label for="username">用户账号& ...

  7. G-channel 实现低光图像增强

    G-channel 之前研究低光图像增强时,看到一篇博客,里面介绍了一种方法,没有说明出处,也没有说明方法的名字,这里暂时叫做 G-channel 算法. 博客地址:低照度图像增强(附步骤及源码)_低 ...

  8. 通过python,将excel中的数据写入二维列表

    需求:读取Excel表中数据,每行数据放在一个列表中,再把所有列表都存入到一个列表中,形成二维列表. 实现方法:导入可在Python处理Excel表格数据的模块. excel表: 方法一:xlwing ...

  9. VMware中的虚拟机Debian10的服务器配置,使主机(win10)能够通过本地域名(如www.xxx.com)访问该服务器

    VMware中的虚拟机Debian10的服务器配置,使主机(win10)能够通过本地域名(如www.xxx.com)访问该服务器 安装过程 下载debian-10.13.0-amd64-DVD-1.i ...

  10. [MAUI]在.NET MAUI中实现可拖拽排序列表

    .NET MAUI 中提供了拖放(drag-drop)手势识别器,允许用户通过拖动手势来移动控件.在这篇文章中,我们将学习如何使用拖放手势识别器来实现可拖拽排序列表.在本例中,列表中显示不同大小的磁贴 ...