unity利用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);
}
}
}
unity利用Rigibody实现第一人称移动的更多相关文章
- unity中制作模拟第一人称视角下的指南针
private int zRotation; public GameObject obj; public void Update() { //obj = GameObject.Find("C ...
- unity中自制模拟第一人称视角
public float sensitivityX = 5f; public float sensitivityY = 5f; public float sensitivetyKeyBoard = 0 ...
- 开发一个最简单的Cardboard虚拟现实应用(四)做一个Cardboard第一人称控制器
[开源互助-原创文章,转载请说明出处]第三帖中已经创建了一个cardboard自带的demo应用,但它是不能移动的,玩家只能站在原地,通过头部转动来观察四周,除此之外,玩家并没有更多的手段与游戏场景进 ...
- 【Unity3D】Unity自带组件—完成第一人称人物控制
1.导入unity自带的Character Controllers包 2.可以看到First Person Controller组件的构成 Mouse Look() : 随鼠标的移动而使所属物体发生旋 ...
- 关于Unity中FPS第一人称射击类游戏制作(专题十)
当前Unity最新版本5.6.3f1,我使用的是5.5.1f1 场景搭建 1: 导入人物模型, 手持一把枪;2: 导入碎片模型;3: 创建一个平面;4: 创建一个障碍物;5: 导入人物模型;6: 配置 ...
- Unity——第一人称控制器的实现
Unity--第一人称控制器的实现 一.功能描述 在一个场景中实现人物的前后左右移动和跳跃功能:其中前后左右移动通过W.A.S.D方向键实现,跳跃功能通过空格键实现,并且考虑到重力作用,来调节跳跃功能 ...
- Opengl绘制我们的小屋(二)第一人称漫游
这章我们先讲第一人称漫游的实现.在openTK里,我们用函数Matrix4.LookAt(caram.Eye,caram.Target,Vector3.UnitY)来放置摄像机,其中三个参数分别与摄像 ...
- 【转】265行JavaScript代码的第一人称3D H5游戏Demo
译文:http://blog.jobbole.com/70956/ 原文:http://www.playfuljs.com/a-first-person-engine-in-265-lines/ 这是 ...
- 如何使用threejs实现第一人称视角的移动
在数据可视化领域利用webgl来创建三维场景或VR已经越来越普遍,各种开发框架也应运而生.今天我们就通过最基本的threejs来完成第一人称视角的场景巡检功能.如果你是一位threejs的初学者或正打 ...
- unity3d学习笔记(一) 第一人称视角实现和倒计时实现
unity3d学习笔记(一) 第一人称视角实现和倒计时实现 1. 第一人称视角 (1)让mainCamera和player(视角对象)同步在一起 因为我们的player是生成的,所以不能把mainCa ...
随机推荐
- asp登录认证,记录最后一次登录时间,写入数据库代码
最近开发了一个船员招聘网的程序,但是由于部分功能需要配合ASP代码才能使用,所以就发现以前写的这个asp登录认证代码,今天就将他公布一下. <!--#include file="con ...
- 音视频开发进阶|第四讲:音频自动增益控制 AGC
在之前的文章中,我们已经接触了两个重要的音频前处理模块 – 回声消除 AEC 和噪声抑制 ANS,它们分别解决了 RTC 场景下的回声.噪声问题,极大提升了用户的体验.至此,音频前处理三剑客中,就只剩 ...
- Failed to connect to 127.0.0.1 port 1080: Connection refused拒绝连接错误
一.git拒绝连接原因分析 使用git从远程仓库下载代码出现上述的错误是因为使用了proxy代理,所以要解决该问题,核心操作就是要取消代理 二.解决方式 1.查看Linux当前有没有使用代理 通过gi ...
- 详解同为4800W像素的相机传感器,三星GM1和索尼IMX586区别在哪里?
数字影像之父Bryce Bayer基于RGB模式,通过在感光元件前加上一个滤镜的方法终于实现了彩色照片.Bayer滤镜跨出了照片从黑白到彩色的一大步,但是对于挑剔的人眼来说,每个像素只有一个颜色是远远 ...
- Hexo博客使用valine评论系统无效果及终极解决方案
注意事项 有一些博主valine评论系统无效果,有一些原因: 1.很大程度是因为next的版本升级导致某些参数设置不同 2.valine评论是基于LeanCloud,还有一个文章阅读次数功能也是用Le ...
- Linux 脚本:shell
# 以脚本所在目录作为脚本执行时的当前路径. -P 选项寻找物理上的地址,忽略软连接. SCRIPT_DIR=$(cd $(dirname $0); pwd -P) # 在任意位置执行自己的可执行程序 ...
- Abstract Factory 抽象工厂模式简介与 C# 示例【创建型1】【设计模式来了_1】
〇.简介 1.什么是抽象工厂模式? 一句话解释: 提供一个接口,以创建一系列相关或相互依赖的抽象对象,而无需指定它们具体的类.(将一系列抽象类装进接口,一次接口实现,就必须实例化这一系列抽象类) ...
- CSS3新增了哪些选择器?(属性、结构伪类、伪元素选择器)
在css3提供的新选择器之前,选择一个元素需要借助id或者class,css3新增的选择器可以更灵活的去选择需要的元素,那css3提供了哪些好用的选择器呢? 首先就是属性选择器,我们可以通过属性选择器 ...
- 利用pytorch自定义CNN网络(一):torchvision工具箱
本文是利用pytorch自定义CNN网络系列的第一篇,主要介绍 torchvision工具箱及其使用,关于本系列的全文见这里. 笔者的运行设备与软件:CPU (AMD Ryzen 5 4600U) + ...
- 关于package-lock.json
前言 上篇文章我们了解了package.json,一般与它同时出现的还有一个package-lock.json,这两者又有什么关系呢?下面一起来了解吧. 介绍 package-lock.json 它会 ...