【Unity】第一人称实现键盘移动WASD

这篇具有很好参考价值的文章主要介绍了【Unity】第一人称实现键盘移动WASD。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Unity】第一人称实现键盘移动WASD

背景:开发影院场景

环境:Unity2021.3

  1. 功能:WASD键实现移动、鼠标左右平滑实现转向

  2. 代码:挂载在相机的父物体上(好像是因为相机本身不支持移动?如有误望指正)文章来源地址https://www.toymoban.com/news/detail-532094.html

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
     
    public class MoveCam : MonoBehaviour {
        private Vector3 m_camRot;
        private Transform m_camTransform;   //摄像机Transform
        private Transform m_transform;      //摄像机父物体Transform
        public float m_movSpeed=10;         //移动系数
        public float m_rotateSpeed=10;       //旋转系数
        
        private void Start() {
            m_camTransform = Camera.main.transform;
            m_transform = GetComponent<Transform>();
        }
        
        private void Update() {
            Control();
        }
        
        void Control() {
            //获取鼠标移动距离
            float rh = Input.GetAxis("Mouse X");
            float rv = Input.GetAxis("Mouse Y");
    
            // 旋转摄像机
            m_camRot.x -= rv * m_rotateSpeed;
            m_camRot.y += rh * m_rotateSpeed;
    
            m_camTransform.eulerAngles = m_camRot;
    
            // 使主角的面向方向与摄像机一致
            Vector3 camrot = m_camTransform.eulerAngles;
            camrot.x = 0; camrot.z = 0;
            m_transform.eulerAngles = camrot;
    
            // 定义3个值控制移动
            float xm = 0, ym = 0, zm = 0;
    
            //按键盘W向上移动
            if (Input.GetKey(KeyCode.W)) {
                zm += m_movSpeed * Time.deltaTime;
            }
            //按键盘S向下移动
            else if (Input.GetKey(KeyCode.S)) { 
                zm -= m_movSpeed * Time.deltaTime;
            }
            //按键盘A向左移动
            if (Input.GetKey(KeyCode.A)) {
                xm -= m_movSpeed * Time.deltaTime;
            }
            //按键盘D向右移动
            else if (Input.GetKey(KeyCode.D)) {
                xm += m_movSpeed * Time.deltaTime;
            }
            if (Input.GetKey(KeyCode.Space) && m_transform.position.y <= 3) {
                ym += m_movSpeed * Time.deltaTime;
            }
            if (Input.GetKey(KeyCode.F) && m_transform.position.y >= 1) {
                ym -= m_movSpeed * Time.deltaTime;
            }
            m_transform.Translate(new Vector3(xm,ym,zm), Space.Self);
        }
    }
    

到了这里,关于【Unity】第一人称实现键盘移动WASD的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity实现第一人称移动(胎教级教学)

    第一步 需要一个场景和一个player作为操作角色,并且 在player子目录创建一个camera 作为视角 这里演示我就随便 创建一个plane 作为 地面 和 一个sphere 作为 player 然后调整好player的位置不要与地面镶嵌就像这样 然后需要给地面(你们自己的场景)和player添加一个Collider组件 在属性

    2024年04月13日
    浏览(34)
  • Unity使用NaveMesh实现第一人称视角移动

    Navemesh寻路系列文章 文章目录 目录 系列文章目录 文章目录 前言 一、NavMeshPath是什么? 二、使用步骤 1.引入库 2.读入数据 总结 navemesh已经大量使用到游戏中,但大部分寻路都是使用SetDestination函数,给予一个目标点移动,第一人称直接操控移动的文章很少。 为了解决这个问

    2024年02月03日
    浏览(39)
  • unity通过脚本实现漫游功能 wasd控制玩家移动,空格跳跃,鼠标控制视野旋转,滑轮控制镜头伸缩

    将场景中的摄像机删除,在玩家的控制面板中添加Camera组件,和rigibody组件   using System.Collections; using System.Collections.Generic; using UnityEngine; public class move : MonoBehaviour {     public float speed;     Rigidbody rigid;     void Start()     {                 rigid = GetComponentRigidbody();     }  

    2024年02月10日
    浏览(46)
  • Qt使用星空图作为窗口背景,点击键盘的WASD控制小飞机在上面移动。

    事件函数的使用依托于Qt的事件机制,一个来自于外部事件的传递机制模型如下所示 信号槽虽然好用,但是无法包含所有的情况,事件函数可以起到对信号槽无法覆盖的一些时机进行补充,事件函数的使用无需连接。 常用的事件函数如下所示。 // 绘制事件 void QWidget :: pain

    2024年02月11日
    浏览(48)
  • Unity3D实现第一人称移动,随鼠标转动视角+上楼梯(C#)

    第一人称移动: 1、在层级面板创建一个Capsule,命名为Player,将层级面板中的相机拖到Player下方 2、重置Player和摄像机的Transform数值(方便调整摄像机在Player上的位置),然后调整摄像机在Player上的位置 大概将摄像机放到Player眼睛的位置即可。 3、创建一个脚本,命名为Came

    2024年02月13日
    浏览(59)
  • Unity解决:3D开发模式第三人称视角 WASD控制角色移动旋转 使用InputSystem

    Unity版本:2019.2.3f1 目录  安装InputSystem 1:创建InputHander.cs脚本 挂载到Player物体上 获取键盘输入WADS 2.创建PlayerLocomotion.cs挂载到Player物体上,控制物体移动转向   菜单栏/Window/Package Manager/Input System  工程面板内 右键--创建Input Actions  选中New Controls改名为PlayerControls 然后属

    2024年02月06日
    浏览(53)
  • Unity 第一人称视角控制移动、旋转

    第一人称视角操作 此功能主要是借鉴YouTube上一个博主的教程,写的蛮好我就搬运过来让大家也试试。 其原理是:左右旋转是控制父物体的欧拉角的Y轴 上下点头是子物体相机的欧拉角Z轴 水平方向 跳跃: 移动

    2024年04月27日
    浏览(36)
  • 【Unity】【Pico】手柄摇杆控制第一人称移动和旋转

    背景:开发影院系统 环境:Unity2021.3、PicoNeo3ProEye 描述 :已经在Unity项目中实现第一人称WASD移动和鼠标旋转(代码见我的其他博文) 需求 :希望项目在Pico一体机运行时可以通过手柄摇杆控制(unityxr的基础配置见我的其他博文) 解决 : Locomotion System XR Origin Continuous Move Pr

    2024年01月18日
    浏览(88)
  • Unity 3D 人物移动朝向跟随摄像机(第一人称)

    以人物身体旋转控制镜头左右滑动 以摄像机旋转控制镜头上下滑动 首先我们要知道 摄像机是作为人物的子物体的(充当眼睛) 所以当人物旋转时 摄像机会跟随它朝相同的方向旋转相同的角度 从而达到 眼睛(摄像机)注视的方向一定是人物的正前方 那么这样做有什么好处

    2024年02月21日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包