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. C语言。格式化符号

    %s 输出字符串 %d 输出整形数字 %f 输出浮点数数字 %c 输出字符 %x 输出16进制 %04d 输出长度固定的整形数字(0001,0002,....)

  2. 【Python】Beautiful Soup

    简介 Beautiful Soup 对象 我全部使用soup表示: Beautiful Soup 简介: 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据. ...

  3. 使用mybatis-generator 能生成 但是实际使用时抛出异常Invalid bound statement (not found)

    好多好多好多红 但是重点是一句org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): {}.d ...

  4. @Import :Spring Bean模块装配的艺术

    本文分享自华为云社区<Spring高手之路8--Spring Bean模块装配的艺术:@Import详解>,作者: 砖业洋__. 本文将带你深入探索Spring框架的装配机制,以及它如何使 ...

  5. VueJs禁止页面鼠标右键、选中、调用开发者工具

    1.禁止鼠标右键操作 // 禁止鼠标右键 window.oncontextmenu = function () { return false; }; 2.禁止选中网页内容 // 禁止选中网页上内容 w ...

  6. Jenkins-Pipline实现原理

    Jenkins-Pipline原理 本文仅探讨jenkins pipline 的原理,是流水线的一个demo版本实现,不能代表Jenkins pipline的具体实现,仅供参考. 1. Jenkins ...

  7. 【go语言】2.3.1 错误处理的基本概念

    在 Go 语言中,错误处理是通过返回错误值进行的,而不是像一些其他语言那样通过抛出和捕获异常.Go 语言有一个内置的接口类型 error,专门用于处理错误. error 接口 error 是一个内置的 ...

  8. Node: 使用nvm切换node版本

    软件下载 https://github.com/coreybutler/nvm-windows/releases/tag/1.1.7 解压并安装 双击程序一路安装即可.安装完成后,在控制台输入nvm出 ...

  9. 批量获取FreeSWITCH所有分机号及其密码

    前言 有次项目上需要获取所有FreeSWITCH注册分机的分机号和密码,就用python写了个小脚本来获取. 可以先把freeswitch/conf/directory/default/目录下的所有x ...

  10. C# 中关于 T 泛型【C# 基础】

    〇.前言 C# 里面的泛型不仅可以使用泛型函数.泛型接口,也可以使用泛型类.泛型委托等等.在使用泛型的时候,它们会自行检测你传入参数的类型,因此它可以为我们省去大量的时间,不用一个个编写方法的重载.与 ...