当前位置: 首页 > news >正文

Unity第一人称移动和观察

创建一个可以自由移动的第一人称视角

人物通过WSAD进行前后左右移动,通过鼠标右键进行旋转

Step1:创建一个Player玩家,在节点下加两个子物体,一个摄像头和一个Capsule充当身体

Step2:创建一个脚本挂载在Player节点下,再在这个Player物体下加上Character Controller脚本

Step3:该脚本内容如下

using UnityEngine;/// <summary>
/// 人物移动脚本
/// 直接引用Character的Move方法
/// </summary>
public class PlayerMove : MonoBehaviour
{//键盘public float speed = 30F;public float jumpSpeed = 5.0F;public float gravity = 5.0F;private Vector3 moveDirection;private CharacterController characterController;//鼠标public float mousespeed = 3f;public float minmouseY = -45f;public float maxmouseY = 45f;public Transform playerCamera;private Vector3 oldMousePos;private Vector3 newMousePos;private void OnEnable(){characterController = GetComponent<CharacterController>();}private void FixedUpdate(){if (Input.GetMouseButton(1)){//把当前右键鼠标点的位置先存储起来newMousePos = Input.mousePosition;//再把每一帧刚开始的位置和上一帧的位置做一个差值Vector3 dis = newMousePos - oldMousePos;//X,Y方向上位移的距离就是这个差值的x,y分量*鼠标移动速度float angleX = dis.x * mousespeed;float angleY = dis.y * mousespeed;//然后再根据分量差值进行旋转transform.Rotate(new Vector3(-angleY, 0, 0), Space.Self);transform.Rotate(new Vector3(0, angleX, 0), Space.World);}if(characterController.isGrounded){moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));moveDirection = transform.TransformDirection(moveDirection);moveDirection *= speed;if (Input.GetButton("Jump")){moveDirection.y = jumpSpeed;}}moveDirection.y = moveDirection.y - gravity * Time.deltaTime;//使用characterController的Move方法对物体进行移动,参数就是移动方向 * 时间characterController.Move(moveDirection * Time.deltaTime);//更新鼠标的下一帧位置oldMousePos = Input.mousePosition;}
}

运行即可

相关文章:

Unity第一人称移动和观察

创建一个可以自由移动的第一人称视角 人物通过WSAD进行前后左右移动&#xff0c;通过鼠标右键进行旋转 Step1:创建一个Player玩家&#xff0c;在节点下加两个子物体&#xff0c;一个摄像头和一个Capsule充当身体 Step2:创建一个脚本挂载在Player节点下&#xff0c;再在这个Pl…...

【UBOOT】1-使用与烧写

​一、uboot简介 1&#xff09;uboot是一个裸机程序&#xff0c;比较复杂 2&#xff09;最主要的作用是引导Linux内核启动&#xff1b; 初始化DDR&#xff1b; 因为Linux是运行在DDR里面的&#xff1b;而Linux镜像&#xff08;zImage或uImagedtb&#xff09;一般存放在SD EMM…...

竞赛 深度学习OCR中文识别 - opencv python

文章目录 0 前言1 课题背景2 实现效果3 文本区域检测网络-CTPN4 文本识别网络-CRNN5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习OCR中文识别系统 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;…...

XTU-OJ 1331-密码

题目描述 Eric喜欢使用数字1,2,3,4作为密码&#xff0c;而且他有个怪癖&#xff0c;相邻数字不能相同&#xff0c;且相差不能超过2。当然只用数字做密码&#xff0c;会比较弱&#xff0c;Eric想知道当长度为n时&#xff0c;这样的密码有多少种&#xff1f; 输入 第一行是一个整…...

【docker】ubuntu下安装

ubuntu下安装docker 卸载原生docker更新软件包安装依赖Docker官方GPG密钥添加软件来源仓库安装docker添加用户组运行docker安装工具重启dockerhelloworld 卸载原生docker $ apt-get remove docker docker-engine docker.io containerd runc更新软件包 apt-get update apt-get…...

Linux- 命名信号量和无名信号量的区别

命名信号量和无名信号量之间的区别主要在于它们的可见性、生命周期以及如何在进程或线程之间共享。根据这些特点&#xff0c;它们各自更适合不同的应用场景&#xff1a; 命名信号量&#xff1a; 可见性&#xff1a;命名信号量由一个与其关联的名称标识&#xff0c;通常在某种文…...

【C/C++】STL——深度剖析list容器

​&#x1f47b;内容专栏&#xff1a; C/C编程 &#x1f428;本文概括&#xff1a;list的介绍与使用、深度剖析及模拟实现。 &#x1f43c;本文作者&#xff1a; 阿四啊 &#x1f438;发布时间&#xff1a;2023.10.12 一、list的介绍与使用 1.1 list的介绍 cpluplus网站中有关…...

#力扣:136. 只出现一次的数字@FDDLC

136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 一、Java class Solution {public int singleNumber(int[] nums) {int ans 0;for(int num: nums) ans ^ num;return ans;} } 二、C class Solution { public:int singleNumber(vector<int>& nums…...

VR、AR、MR、XR到底都是什么?有什么区别

目录 VRARMRXRAR、VR、MR、XR的区别 VR 英&#xff1a;Virtual Reality 中文翻译&#xff1a;虚拟现实 又称计算机模拟现实。是指由计算机生成3D内容&#xff0c;为用户提供视觉、听觉等感官来模拟现实&#xff0c;具有很强的“临场感”和“沉浸感”。我们可以使用耳机、控制器…...

UE5射击游戏案例蓝图篇(一)

一、使用到的资源 1.小白人动画包 2.基础武器包 3.虚幻商城免费的模型包 二、角色创建 1.以Character为基类创建出需要的角色&#xff0c;双击打开之后并在已有组件的基础上&#xff0c;添加摄像机臂和摄像机两个组件。添加完成之后可以根据自己的需要调整摄像机臂的位置&…...

excel管理接口测试用例

闲话休扯&#xff0c;上需求&#xff1a;自动读取、执行excel里面的接口测试用例&#xff0c;测试完成后&#xff0c;返回错误结果并发送邮件通知。 分析&#xff1a; 1、设计excel表格 2、读取excel表格 3、拼接url&#xff0c;发送请求 4、汇总错误结果、发送邮件 开始实现…...

根文件系统制作并启动 Linux

根文件系统制作并启动 Linux busybox 下载链接&#xff1a;https://busybox.net/ 下载 wget https://busybox.net/downloads/busybox-1.36.1.tar.bz2解压 tar -vxf busybox-1.36.1.tar.bz2 并进入其根目录 export ARCHarm export CROSS_COMPILEarm-none-linux-gnueabihf- m…...

JSKarel教学编程机器人使用介绍

JSKarel教学编程机器人使用介绍 为了避免被编程语言固有的复杂性所困扰&#xff0c;有一个被称为卡雷尔&#xff08;Karel&#xff09;机器人的微型世界&#xff08;microworld&#xff09;的简化环境&#xff0c;可以让编程初学者从中学习理解编程的基本概念&#xff0c;而不…...

换低挡装置(Kickdown, ACM/ICPC NEERC 2006, UVa1588)rust解法

给出两个长度分别为n1&#xff0c;n2&#xff08;n1&#xff0c;n2≤100&#xff09;且每列高度只为1或2的长条。需要将它们放入一个高度为3的容器&#xff08;如图3-8所示&#xff09;&#xff0c;问能够容纳它们的最短容器长度。 样例 2112112112 2212112 1012121212 2121…...

Windows10用Navicat 定时备份报错80070057

直接按照网上的教程配置定时任务发现报错&#xff0c;提示参数非法之类的&#xff0c;80070057。 搜索加自己测试发现是用户权限问题。 设置任务计划的时候&#xff0c;我用了用户组&#xff0c;选了administors&#xff0c;在勾选上run with hightest privileges。 查找用户…...

JimuReport 积木报表 v1.6.4 稳定版本正式发布 — 开源免费的低代码报表

项目介绍 一款免费的数据可视化报表&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完成报…...

为什么要把 String 设计为不可变?

将字符串设计为不可变具有多个重要的原因&#xff1a; 线程安全性&#xff1a; 不可变字符串可以在多线程环境中共享而无需额外的同步措施。因为字符串不会改变&#xff0c;多个线程可以同时访问它而不会导致竞态条件或数据不一致性。 缓存和性能优化&#xff1a; 字符串不可变…...

华为OD机考算法题:服务器广播

题目部分 题目服务器广播难度难题目说明服务器连接方式包括直接相连&#xff0c;间接连接。A 和 B 直接连接&#xff0c;B 和 C 直接连接&#xff0c;则 A 和 C 间接连接。直接连接和间接连接都可以发送广播。 给出一个 N * N 数组&#xff0c;代表 N 个服务器&#xff0c;mat…...

Android ViewBinding和DataBinding功能作用区别

简述 ViewBinding和DataBinding都是用于在 Android 应用程序中处理视图的工具&#xff0c;但它们有不同的作用和用途。 ViewBinding: ViewBinding 是 Android Studio 的一个工具&#xff0c;用于生成一个绑定类&#xff0c;能够轻松访问 XML 布局文件中的视图。ViewBinding 为…...

【云计算网络安全】DDoS 攻击类型:什么是 ACK 洪水 DDoS 攻击

文章目录 一、什么是 ACK 洪水 DDoS 攻击&#xff1f;二、什么是数据包&#xff1f;三、什么是 ACK 数据包&#xff1f;四、ACK 洪水攻击如何工作&#xff1f;五、SYN ACK 洪水攻击如何工作&#xff1f;六、文末送书《AWD特训营》内容简介读者对象 一、什么是 ACK 洪水 DDoS 攻…...

DDoS攻击:企业与个人都应了解的基本知识

一、DDoS攻击的基本原理 DDoS攻击的基本原理在于通过超载目标系统、服务或网络的资源&#xff0c;使其无法正常响应合法用户的请求。这类攻击通常涉及大量计算机或设备&#xff0c;这些设备被操纵成一个庞大的“僵尸网络”&#xff08;botnet&#xff09;。攻击者利用这个庞大…...

VSCode经典体验配置指南:从界面净化到键盘流工作流打造

1. 项目概述&#xff1a;为什么我们需要一个“经典体验”的VSCode&#xff1f;如果你和我一样&#xff0c;是个在代码编辑器里泡了十多年的老程序员&#xff0c;那你一定经历过从记事本、Notepad、Sublime Text到Visual Studio Code&#xff08;VSCode&#xff09;的漫长迁徙。…...

程序员,真要失业了:Claude Code新增/goal指令,一个命令,AI替你干完整个项目

最近&#xff0c;GitHub上发生了一件小事。 一个全美排名Top 5的软件工程师&#xff0c;发了一条帖子&#xff0c;只有三句话&#xff1a; “我用/goal重构了一个3万行的遗留项目&#xff0c;花了4小时。” “没有人盯着我&#xff0c;没有PR被拒&#xff0c;没有半夜爬起来看…...

Cursor AI插件开发指南:构建企业级智能编码助手

1. 项目概述&#xff1a;一个为开发者而生的智能编码伴侣如果你是一名开发者&#xff0c;每天在IDE里敲代码的时间超过8小时&#xff0c;那你一定对“上下文切换”和“信息查找”这两件事深恶痛绝。想象一下&#xff0c;你正在写一个复杂的API接口&#xff0c;突然需要回忆上周…...

Python热重载工具Reloadium:原理、配置与实战避坑指南

1. 项目概述&#xff1a;重新定义Python热重载的开发体验如果你是一名Python开发者&#xff0c;无论是做Web后端、数据分析脚本还是机器学习模型训练&#xff0c;大概率都经历过这样的场景&#xff1a;修改了一行代码&#xff0c;保存文件&#xff0c;然后不得不手动停止当前运…...

Motorola LS2208条码扫描器USB接口模式解析与Python数据采集实战

1. 项目概述&#xff1a;从“扫码枪”到数据采集终端在仓库、快递站或者超市收银台&#xff0c;我们每天都能看到工作人员拿着一个像手枪一样的东西&#xff0c;“嘀”一声&#xff0c;商品信息就录入了系统。这个设备就是条码扫描器&#xff0c;很多人习惯叫它“扫码枪”。你可…...

Belullama:本地大模型部署的瑞士军刀,兼容Ollama API

1. 项目概述&#xff1a;一个为本地大模型量身定制的“瑞士军刀”如果你和我一样&#xff0c;热衷于在本地部署和折腾各种开源大语言模型&#xff0c;那你一定遇到过这样的场景&#xff1a;好不容易从Hugging Face或者ModelScope上拖下来一个几十GB的模型文件&#xff0c;兴冲冲…...

Windows驱动管理专业解决方案:Driver Store Explorer完全指南

Windows驱动管理专业解决方案&#xff1a;Driver Store Explorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Driver Store Explorer&#xff08;简称Rapr&#xff09;是一款…...

如何一键修复Windows系统依赖问题:VisualCppRedist AIO终极解决方案指南

如何一键修复Windows系统依赖问题&#xff1a;VisualCppRedist AIO终极解决方案指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过打开游戏或…...

JSON Schema驱动智能体交互:构建结构化协作的接口契约

1. 项目概述&#xff1a;一个为智能体交互而生的“接口契约” 在构建基于大型语言模型的智能体&#xff08;Agent&#xff09;系统时&#xff0c;我们常常会遇到一个核心痛点&#xff1a;如何让智能体之间、智能体与工具之间、甚至是智能体与外部系统之间&#xff0c;进行结构…...