Unity用代码写行走移动(第一人称)
利用代码写物体移动,首先我们要知道按键检测
一般按键检测if (Input.GetKey(KeyCode.按键值))
比如说我按W触发就是
if (Input.GetKey(KeyCode.W)
前进代码如下:
void Update(){if (Input.GetKey(KeyCode.W)){gameObject.transform.Translate(Vector3.forward * Time.deltaTime * moveSpeed);}if (Input.GetKey(KeyCode.S)){gameObject.transform.Translate(-Vector3.forward * Time.deltaTime * moveSpeed);}if (Input.GetKey(KeyCode.A)){gameObject.transform.Translate(-Vector3.right * Time.deltaTime * moveSpeed);}if (Input.GetKey(KeyCode.D)){gameObject.transform.Translate(Vector3.right * Time.deltaTime * moveSpeed);}}
写完脚本拖到要移动的物体上面
不过在这之前,你的物体只能前后左右移动
写视觉控制代码
public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }public RotationAxes axes = RotationAxes.MouseXAndY;public float sensitivityX = 15F;public float sensitivityY = 15F;public float minimumX = -360F;public float maximumX = 360F;public float minimumY = -90F;//水平public float maximumY = 90F;//水平float rotationY = 0F;void Start(){// Make the rigid body not change rotationif (GetComponent<Rigidbody>())GetComponent<Rigidbody>().freezeRotation = true;}void Update(){if (axes == RotationAxes.MouseXAndY){float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;rotationY += Input.GetAxis("Mouse Y") * sensitivityY;rotationY = Mathf.Clamp(rotationY, minimumY, maximumY);transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);}else if (axes == RotationAxes.MouseX){transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0);}else{rotationY += Input.GetAxis("Mouse Y") * sensitivityY;rotationY = Mathf.Clamp(rotationY, minimumY, maximumY);transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);}//分割线Cursor.visible = false;Cursor.lockState = CursorLockMode.Locked;//将鼠标隐藏并固定游戏中间}
将这些代码写到另一个脚本里面并拖动到摄像机里面
可是你还会发现,能看四周和移动,但是摄像机还是在原地,这里就要用到摄像机跟随了!
public Transform target;private Vector3 offset;void Start(){offset = target.position - this.transform.position;}void Update(){this.transform.position = target.position - offset;}
同样写入另一个脚本拖到摄像机里面,会在摄像机有个目标选项,这个选项就是要跟随的目标
不过你还会发现,你摄像机朝着的地方按W还是向固定方向移动
这里就得用到,物体朝向跟随摄像机了
创建新脚本输入:
private GameObject _mainCamera;// Start is called before the first frame updateprivate void Start(){_mainCamera = GameObject.FindWithTag("MainCamera");}// Update is called once per frameprivate void Update(){//物体始终朝着摄像机所面对方向var rotation = Quaternion.LookRotation(_mainCamera.transform.TransformVector(Vector3.forward),_mainCamera.transform.TransformVector(Vector3.up));rotation = new Quaternion(0, rotation.y, 0, rotation.w);gameObject.transform.rotation = rotation;}
然后将这个脚本拖动到移动的物体上面,在移动物体加上rigidbody组建,脚下创建立方体,缩放大小自定义,我设置10,1,10
运行, 就可以移动了
切记,该文章为有一点脚本基础的人直接复制粘贴食用,初学unity可能有的人和我初学会一样犯错在网上搜索:unity脚本写完进入游戏没效果
那是因为你没有将脚本拖动到物体属性界面里面,而写this(这个物体).xxx又不知道你要执行脚本的是哪个物体,所以会报错或没效果 !
Unity用代码写行走移动(第一人称)相关推荐
- 【Vic的小课堂】Unity游戏功能(2)—第一人称镜头
·序言 "你最早喜欢上的游戏类型是什么?" 如果询问每一位游戏爱好者和游戏开发者,那么FPS(First-Person Shooting,第一人称射击)类型游戏必定是一个高频次出现 ...
- 【游戏开发实战】Unity手游第一人称视角,双摇杆控制,FPS射击游戏Demo(教程 | 含Demo工程源码)
文章目录 一.前言 二.实现方案 1.无主之地,第一人称视角 2.我之前做的摇杆控制 3.第一人称视角 + 摇杆控制 三.开始实战 1.资源获取:Unity AssetStore 2.Low Poly ...
- 【unity】游戏的第一人称编写,限制角色视野范围,unity的Rotate使用情况区分一次搞懂
刚开始学习unity的时候很容易对众多的API搞糊涂,特别是博客里很多博主的写作思路十分混乱,完全不能看懂,看了书之后感觉清晰了很多,总结一下. 如果你还分不清世界坐标系和Self坐标系,建议先去看下 ...
- 从大专生到蚂蚁金服CTO,他写下“支付宝”第一行代码:逆风的方向,更适合飞翔!...
Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨Mr.K 整理丨Emma 来源丨技术领导力 ...
- 突发!倪行军出任支付宝中国董事长,技术出身的他,曾写下“支付宝”第一行代码.........
作者| Mr.K 整理| Emma 来源| 技术领导力(ID:jishulingdaoli) 昨天(8月1日),支付宝(中国)网络技术有限公司法定代表人.董事长由井贤栋变更为倪行军.阿里巴巴这次高 ...
- 关于Unity 3D第一人称视角移动时相机抖动的问题
Unity 3D中第一人称视角Camera相机抖动的原因及解决方法 文章目录 前言 问题反思 解决方法 错误代码 修改后数据 总结扩展 前言 在使用Unity自制第一人称FPS游戏时,场景运行时鼠标移 ...
- unity中利用cinemachine插件制作玩家视觉效果(第三人称转第一人称视角)
在很多游戏第三人称中很多时候在拾取道具或者一些时候为了增加游戏的体验感 会将镜头转变为第一人称(特写) 在这篇博客给大家介绍一下用cinemachine插件和一点代码实现镜头的转变 实现过程 首先我给 ...
- 【Unity】第一人称实现键盘移动WASD
[Unity]第一人称实现键盘移动WASD 背景:开发影院场景 环境:Unity2021.3 功能:WASD键实现移动.鼠标左右平滑实现转向 代码:挂载在相机的父物体上(好像是因为相机本身不支持移动? ...
- Unity旋转之四元数(开关车门,第一人称控制器)
在Unity中,常用的旋转方式有三种,分别是transform.Rotate(参数),欧拉角旋转,和今天我们要聊的四元数.虽然四元数理解起来不如欧拉角那么直观,但是它却能很好的避免了万向锁问题,而且在 ...
最新文章
- 一位数据挖掘成功人士给数据挖掘在读研究生的建议
- MySQL—04—MySQL的其他对象
- java 前端导出exvel_使用纯前端做的Excel导出了解一下
- ERP的配置管理实践
- MATLAB AppDesigner 设计UI界面中调用自定义函数
- 用vscode创建一个c项目_vscode怎么创建C语言项目
- java毕业设计美发门店管理系统Mybatis+系统+数据库+调试部署
- 电脑系统win11改win10怎么改?Win11改win10教程
- OpenCV图形处理基本概念
- 笔记本电池“衰老”了怎么办?
- Android Service保活方法总结
- 图解TCP/IP网络知识轻松入门 读书笔记(五)
- 计算机哪个方向就业好,计算机就业的几个方向
- 矩阵论学习笔记一:线性空间与线性变换
- VR-DANN: 联合视频解码与AI处理
- java中record,Java 中的 record 关键字
- JAVA API编写
- 内链和外链到底是什么?
- 谈一谈人工智能怎么入门_手把手教你入门
- 游戏 2048 的最佳算法是什么?