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

【Unity入门】Input.GetAxis(““)控制物体移动、旋转

使用Unity的Input.GetAxis(“”)控制物体移动、旋转

Input.GetAxis(“”) 是 Unity 引擎中的一个方法,用于获取游戏玩家在 键盘 或 游戏手柄 上输入的某个轴(Axis)的值。这里的 “” 是一个字符串参数,表示要获取的轴的名称。

在 Unity 中,有多种轴类型,如 “Horizontal”(水平轴)、“Vertical”(垂直轴)、“Mouse X”(鼠标水平滚轮轴)和 “Mouse Y”(鼠标垂直滚轮轴)等。这些轴的值可以用来控制游戏角色的移动、缩放或旋转等动作。这些数值都处于-1 到1 之间,你可以用代码:

        /*控制左右,x轴*/float h = Input.GetAxis("Horizontal");/*控制前后,z轴*/float v = Input.GetAxis("Vertical");/*鼠标中间前后滑轮控制上下,y轴*/float mouse = Input.GetAxis("Mouse ScrollWheel");this.transform.Translate(new Vector3(h * speed, mouse * mouseSpeed, v * speed)*Time.deltaTime, Space.World);

来控制移动

参数 Horizontal

以 “Horizontal” 为例,Input.GetAxis(“Horizontal”) 方法会返回一个值,表示玩家在水平方向上输入的值。如果玩家向左移动键盘或游戏手柄,该值将为负;如果玩家向右移动,该值将为正。
注:该轴默认是由 A、D 或 ←键、→键 来触发

参数 Vertical

Input.GetAxis("Vertical ") 方法会返回一个值,表示玩家在垂直方向上输入的值。如果玩家向下移动键盘或游戏手柄,该值将为负;如果玩家向上移动,该值将为正。
注:该轴默认是由 W、S 或 ↑键、↓键 来触发

参数 Mouse ScrollWheel

注:该轴默认是鼠标中间前后滑轮触发,不是按

参数 “Mouse X” 轴和 “Mouse Y” 轴

返回的值分别表示玩家在垂直方向、鼠标水平滚轮和鼠标垂直滚轮上的输入。

在代码中,我们可以将这些轴的值用于控制游戏角色的移动、旋转等动作。例如,在您提供的代码中,MoveHorizontal 和 MoveVertical 变量分别存储了水平轴和垂直轴的值,用于控制角色在水平方向和垂直方向上的移动。
示例代码:下面这个代码实现控制物体 移动和左右、上下旋转

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ConRole : MonoBehaviour
{// yong鼠标控制方向,用方向键控制移动// 设置角色的移动速度和旋转速度public float Movespeed = 15f;public float Rotatespeed = 10f;float RotationY;//用来累积存储用户每次移动鼠标得出的值float RotationX;//用来累积存储用户每次移动鼠标得出的值void Update(){// 【控制物体移动】获取水平方向和垂直方向的输入值float MoveHorizontal = Input.GetAxis("Horizontal");float MoveVertical = Input.GetAxis("Vertical");//全部存到一个向量里面Vector3 MoveDir = new Vector3(MoveHorizontal,0, MoveVertical);//上面这句不能保持物体朝自己的Z正方移动,因此用下面的语句transform.Translate(MoveDir * Movespeed * Time.deltaTime, Space.Self);//【控制物体旋转】// 获取鼠标的旋转输入值  ,Mouse X\ MouseY 是来源鼠标在水平方向的移动数值转换返回为-1 -  1 之间的数值float RotaY = Input.GetAxis("Mouse X");//鼠标水平移动返回-1  -  +  1,这个数值将来用来给物体绕Y轴旋转float RotaX = Input.GetAxis("Mouse Y");//鼠标水平移动返回-1  -  +  1,这个数值将来用来给物体绕X轴旋转//这是使用欧拉角的旋转方式,这种旋转有个缺陷就是,旋转一个轴没有问题!不能同时旋转2个及以上的轴。//transform.Rotate(new Vector3(RotaX * Rotatespeed,RotaY * Rotatespeed,0),Space.Self); //旋转2个及以上的轴,需要用四元数赋值给RetationRotationY += RotaY * Rotatespeed*Time.deltaTime;RotationX+= RotaX * Rotatespeed * Time.deltaTime;this.transform.rotation = Quaternion.Euler(RotationX, RotationY, 0);LimtRotatX();}void LimtRotatX(){//限制了上下旋转也就是围绕X轴旋转的最小角度和最大角度  !注意 -50 代表后仰旋转!60  度代表了!往前旋转!RotationX = Mathf.Clamp(RotationX,-50,60);}
}
其他参数
  • GetAxis(“Horizontal”);//对应键盘上的A键和D键 或←键和→键

  • GetAxis(“Vertical”); //对应键盘上的W键和S键 或↑键和↓键

  • GetAxis(“Mouse X”); //对应X方向上鼠标的移动,在移动设备上也可以这样

  • GetAxis(“Mouse Y”); //对应Y方向上鼠标的移动,在移动设备上也可以这样

  • GetAxis(“Fire1”); //对应鼠标左键或left+Ctrl

  • GetAxis(“Fire2”); //对应鼠标右键或left+Alt

  • GetAxis(“Fire3”); //对应鼠标中键(是按,不是前后滑动)或left+shift

  • GetAxis(“Mouse ScrollWheel”); //对应鼠标中键前后滑动(不是按)

  • GetAxisRaw(“Fire1”);

input.getAxis()和input.getAxisRaw()的区别

input.getAxis()的返回值m从0渐变为1或者-1

input.getAxisRaw()的返回值从0变成1或者-1,没有渐变

http://www.lryc.cn/news/242976.html

相关文章:

  • 【C++ 设计模式】面向对象设计原则 Template Method 模式 Strategy 策略模式
  • Flink-简介与基础
  • mobiusp 正在创作乐曲
  • Jensen不等式
  • 北邮22级信通院数电:Verilog-FPGA(11)第十一周实验(2)设计一个24秒倒计时器
  • 什么是单元测试?
  • PTA-6-51(处理数组、字符串) 人口统计
  • php中使用cdn
  • docker部署MySQL5.7设置密码和远程访问的方法
  • Vue组件基础
  • Javascript每天一道算法题(十八)——矩阵置零-中等
  • 基于ROS开发的开源项目
  • kafka精准一次、事务、幂等性
  • centos 7.9 下利用miniconda里的pyinstaller打包python程序为二进制文件操作方法
  • Motion Plan之基于采样的路径规划算法笔记
  • idea里面常用插件
  • 回归算法优化过程推导
  • 某高品质房产企业:借助NineData平台,统一数据库访问权限,保障业务安全
  • Arduio开发STM32所面临的风险
  • 精准人脉引流软件的开发流程与涉及到的技术
  • Mysql数据库 20.DCL数据控制语言
  • 使用CMake交叉编译Arm Linux程序
  • 训练日志——logging
  • 尺度为什么是sigma?
  • 迭代器模式
  • C++ 修饰符、存储类、运算符、循环、判断
  • 2023 hnust 湖南科技大学 信息安全管理课程 期中考试 复习资料
  • N皇后问题解的个数
  • php订单发起退款(余额和微信支付)
  • 【SpringCloud】认识微服务、服务拆分以及远程调用