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 ...
随机推荐
- 数据安全没保证?GaussDB(for Redis)为你保驾护航
摘要:GaussDB (for Redis)通过账号管理.权限隔离.高危命令禁删/重命名.安全IP免密登录.实例回收站等企业级特性,保障用户数据库数据和信息安全. 本文分享自华为云社区<数据安全 ...
- PhotoShop AI 爱国版保姆级安装和使用
上篇Photoshop AI 令人惊叹的生成式填充介绍了 PhotoShop AI 的新特性功能,有人以为我收了 Adobe 公司的钱帮它们做推广~~~.别不信,事实上确有其事,某平台审核直接把它删掉 ...
- Redis的设计与实现(1)-SDS简单动态字符串
现在在高铁上, 赶着春节回家过年, 无座站票, 电脑只能放行李架上, 面对着行李架撸键盘--看过<Redis的设计与实现>这本书, 突然想起, 便整理下SDS的内容, 相对后面的章节, 算 ...
- 浮点指令之找main函数
环境 vs2019 编译选项x86(32位) debug版本 float指令练习 //c++源码 #include<stdio.h> int main(int argc,char* arg ...
- MySQL——GROUP BY详解与优化
在 MySQL 中,GROUP BY用于将具有指定列中相同值的行分组在一起.这是在处理大量数据时非常有用的功能,允许对数据进行分类和聚合. 基本使用 语法 以下是GROUP BY子句的基本语法: &q ...
- 基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章
最近在整理和编写基于C#的WinForm应用程序,然后碰到一个其他读者也可能碰到的问题,就是C#的Borderless无边框窗体的动画效果问题. 在Visual Studio 2022里,C#的Win ...
- 社区活动 | “中文 AI 微小说大赛”正式开启报名!
️ 我们要求每位参赛选手以 LLM (大语言模型)为工具,将 AI 的能力与选手的创作才华相结合,创造出引人入胜.感人至深或充满疯狂的微小说! 无论你是首次接触 AI 工具还是资深的从业者,我们期待在 ...
- 论文解读(TAT)《 Transferable Adversarial Training: A General Approach to Adapting Deep Classifiers》
Note:[ wechat:Y466551 | 可加勿骚扰,付费咨询 ] 论文信息 论文标题:Transferable Adversarial Training: A General Approach ...
- 《Java极简设计模式》第01章:单例模式(Singleton)
作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章汇总:https://binghe.gitcode.host/md/all ...
- 《Kali渗透基础》01. 介绍
@ 目录 1:渗透测试 1.1:安全问题的根源 1.2:安全目标 1.3:渗透测试 1.4:标准 2:Kali 2.1:介绍 2.2:策略 2.3:安装 3:Kali 初步设置 3.1:远程连接 3. ...