Unity3d 物体速度、运动的控制——Input.GetAxis、transform.Translate、transform.Rotate、AddForce

2023-11-16

首先介绍Input.GetAxis方法,官方文档给出的解释为:

//Returns the value of the virtual axis identified by axisName. 
//返回根据参数名所指定的虚拟轴上的数值。
public static float GetAxis(string axisName)

即根据输入的axisName,返回输入设备在axisName(可能是某一个虚拟轴)上的位移量。这里的位移量指的是相邻两次GetAxis方法被调用时所产生的位移量。即,如果每帧调用一次该方法,就会返回axisName在该帧的位移量。
其中,axisName的可选参数如下:

类型 axisName参数值 解释
触屏类 “Mouse X” 鼠标沿着屏幕X移动时触发
“Mouse Y” 鼠标沿着屏幕Y移动时触发
“Mouse ScrollWheel” 当鼠标滚动轮滚动时触发
键盘操作类 “Vertical” 对应键盘上面的上下箭头,当按下上或下箭头时触发
“Horizontal” 对应键盘上面的左右箭头,当按下左或右箭头时触发

得到输入后,可以根据输入值进行物体运动的控制,首先介绍transform.Translate方法:

//Moves the transform by x along the x axis, y along the y axis, and z along the z axis.
//根据relativeTo所指定的坐标空间或transform空间进行x、y、z轴的相应移动,relativeTo可省略,默认为物体自身
public void Translate(Vector3 translation, Space relativeTo = Space.Self);
public void Translate(float x, float y, float z, Space relativeTo = Space.Self);
public void Translate(Vector3 translation, Transform relativeTo);
public void Translate(float x, float y, float z, Transform relativeTo);

示例,如

//导弹相对于战斗机Fighter以ShootSpeed 的速度向前运动,Vector3.forward在此时表示导弹的正前方  
transform.Translate(Vector3.forward * ShootSpeed * Time.deltaTime, Fighter.transform); 

同理,也有控制目标物体旋转值的方法:

public void Rotate(Vector3 eulerAngles, Space relativeTo = Space.Self);
public void Rotate(float xAngle, float yAngle, float zAngle, Space relativeTo = Space.Self);
public void Rotate(Vector3 axis, float angle, Space relativeTo = Space.Self);

另一种改变物体运动的方式是为其施加某种力:

public void AddForce(float x, float y, float z, ForceMode mode = ForceMode.Force);
public void AddForce(Vector3 force, ForceMode mode = ForceMode.Force);

示例为Unity官网Roll-A-Ball示例中,利用键盘控制小球运动的方法:

public float speed;
void FixedUpdate()
{
    float moveHorizontal = Input.GetAxis("Horizontal");
    float moveVertical = Input.GetAxis("Vertical");

    Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

    GetComponent<RigidBody>().AddForce(movement * speed * Time.deltaTime);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity3d 物体速度、运动的控制——Input.GetAxis、transform.Translate、transform.Rotate、AddForce 的相关文章

  • 【Unity 3D】VR飞机拆装后零件说明功能案例实战(附源码和演示视频 超详细)

    需要源码和资源包请点赞关注收藏后评论区留言私信 一 效果演示 如下图所示 飞机拆装后 单击零件 将会出现零件说明功能 看上去十分有科技感和美观 演示视频如下 零件高亮及显示说明 二 实现步骤 首先双击打开Level6 UI场景 接下来的步骤
  • UNITY 编辑器或游戏卡死

    UNITY 编辑器或游戏卡死 检查脚本引用是否有误 定向关闭主要的脚本 找到可能出问题的脚本 检查其Update中有没有陷入死循环的代码 无限协程中While中无内容 2021 9 28 对第三点不知道该怎么总结 情况描述大致为 While
  • 【Unity 3D】图形界面GUI的讲解及在C#中实现用户登录界面的实战(附源码)

    需要源码请点赞关注收藏后评论区留言并且私信 在游戏开发过程中 游戏界面占据了非常重要的地位 玩家启动游戏的时候 首先看到的就是游戏的UI 其中包含图片 按钮和高级控件等等 UGUI和GUI是Unity 3D中最常用的两个UI系统 一 GUI
  • Unity 3D 博客汇总

    附录 X4 作业优秀博客汇总 目录 文章目录 附录 X4 作业优秀博客汇总 1 最有价值个人博客 Valuable Person Blogs 2 博客表达技巧与游戏创新 2 1 写读者欢迎的游戏博客 2 2 师兄师姐谈游戏创新 竞赛经验谈
  • Unity3d 通过json文件使用C#脚本代码生成多个相机

    首先设计一个存储相机类型的json类如下 using UnityEngine using System using System Collections Serializable public class Cameras public in
  • [零基础学C#] C#从小白到菜鸟 第5期 - 判断

    前言 上一期我们学习了常量和运算符 这一期我们就要开始学习语句块了 简单啊 本来这一期想讲判断和循环的 但是一起讲的话太多了 所以本期就只讲判断吧 学习编程一定要多学多练 多敲出来才能记得更牢 同样 本期的资源下载在底部 大家在学习过程中有
  • [Unity 3d] 修改从asset store上下载的package的地址

    2020 9 16补充更新 在转移sims4的mod文件时又遇到这个问题 一直不成功 然后发现忘了要先把原文件转移到目标目录然后把原文件删了 mklink error cannot create a file when that file
  • Unity 串口接收的报文不完整?处理方式在这

    Unity 串口通讯接收完整报文并处理 串口通讯 Read 函数的处理 解决问题的过程 对Read 函数的应用 弊端 结束 串口通讯 Unity 中的串口通讯和C 的处理方式基本一致 Serial Read 可以读取缓存区中的十六进制数 S
  • 【Unity 3D】VR飞机动态拆装及引擎开关控制案例(附源码和演示视频 超详细)

    需要源码和资源包请点赞关注收藏后评论区留言私信 上一篇博客介绍了如何搭建飞机场景 制作了飞机引擎开启喷射火焰 并且让飞机起飞了参考链接如下 飞机场景搭建 一 效果展示 其中按空格可以控制后部引擎开关 即喷火和不喷火 演示视频如下 拆装飞机控
  • [Unity 3D] 求两个向量间的夹角的方法

    1 Vector3 d1 transform forward Vector3 d2 new Vector3 0 3 0 float angle Vector3 Angle d1 d2 2 Vector3 d1 transform forwa
  • 腾讯COS,Cloudbase API用法教程详细

    Chinar blog www chinar xin 腾讯云 COS Cloudbase API 本文提供全流程 中文翻译 Chinar 的初衷是将一种简单的生活方式带给世人 使有限时间 具备无限可能 Chinar 心分享 心创新 助力快速
  • Unity Notes之控制粒子系统的最大粒子数量

    Unity中的粒子系统使用起来还是比较方便的 不过在实际过程中遇到这样的一个问题 需要动态的来控制一个粒子系统组件所能产生的最大粒子数 看doc上说是有maxParticles来控制 但实际上却没有这个开放的参数 只能通过其它的方式来实现
  • unity3d asset store 的资源下载到本地的目录

    之前一直不知道unity3d asset stored额资源下载在本地什么目录的 也不知道是不是我用的破解版的原因 下载的资源有一部分导入不成功 包解压错误的消息 我确定是没有中文目录 但是一直无解 本地目录也找不到 照成我长期没办法用as
  • 场景间切换与数据传递(以及物体删除技巧)

    先介绍一些基本函数 具体用法自己查文档 1 场景切换 Application LoadLevel Level1 2 读取场景时不移除物体 DontDestroyOnLoad object 会保留该物体的任何数据 包括坐标 可以用于任何物体
  • Unity增量时间Time.deltaTime详解

    如博文无法正常显示 请访问原文地址 https blog csdn net ChinarCSDN article details 82914420 Unity增量时间详解 本文提供全流程 中文翻译 Chinar 坚持将简单的生活方式 带给世
  • 转 Unity知识点0001(Yanlz+协程+List+MeshRender+对象池+链条关节+PlayerPrefs+脚本生命周期+LOD+)

    https blog csdn net VRunSoftYanlz article details 80302012 Unity知识点0001 Yanlz 协程 List MeshRender 对象池 链条关节 PlayerPrefs 脚本
  • 2022-03-09 Unity 3D两个场景的切换

    文章目录 效果 实现步骤 1 创建场景 2 添加按钮 3 写C 脚本实现切换 4 添加Component到Button上 5 添加两个Scene到Build中 测试效果 参考资料 效果 在scene1中点击按钮 进入scene2 实现步骤
  • [Unity 3D] DOTween 常用函数

    DOTween官方文档 http dotween demigiant com documentation php 一 控制变量 1 DOTween To static DOTween To getter setter to float du
  • Unity动画机制 Animator与Animator Controller教程

    Chinar blog www chinar xin Unity动画机制 Animator Animation 本文提供全流程 中文翻译 Chinar 的初衷是将一种简单的生活方式带给世人 使有限时间 具备无限可能 Chinar 心分享 心
  • unity 3D获取当前物体得坐标

    unity 3D获取当前物体得坐标 与物体绑定好 public class location MonoBehaviour Start is called before the first frame update public GameOb

随机推荐

  • 区块链基本原理概述

    1 简介 区块链本质上是一个由若干区块构成的数据链 这条数据链被分散保存到多个计算机节点 这些计算机节点相互独立 相互勿须信任 没有一个权威的中心节点 因而区块链被认为是一个 去中心化 去信任 的系统 在这两个概念中 去中心化 是方法 去信
  • cad上样条曲线上的点太多了_CAD如何将样条曲线转换成多段线

    有时在使用CAD中 需要把绘制出来的样条曲线转换成多段线来方便以后的编辑或输出到别的软件 设备 然而要怎么进行操作才能转换出来呢 下面有几种实用的方法供大家参考 第一种方法 特别使用CAD低版本的用户 打开CAD 打开需要转换的样条曲线图纸
  • Discuz! X2.5 个人空间主题列表帖子分页地址出错的解决方法

    可用以下方案解决 打开文件 source unction unction misc php 找到 domain http G setting domain app forum G setting domain app forum G set
  • Python函数(完整版)

    01 函数的概念 所谓函数 就是把就有独立功能的代码块组织为一个小模块 在需要的时候调用 函数的使用包含两个步骤 1 定义函数 封装 独立的功能 2 调用函数 享受封装的成果 函数的作用 在开发程序是 使用函数可以提高编写的效率以及代码的重
  • java中constant_如何在Java中定义常量(Constant)

    Method One interface ConstantInterface String SUNDAY SUNDAY String MONDAY MONDAY String TUESDAY TUESDAY String WEDNESDAY
  • Windows下使用命令行直接编译STM32

    1 需要准备的工具 makefile运行工具 MinGW gcc编译工具 arm none eabi gcc 2 安装步骤 2 1 MinGW安装 MinGW是是将GCC编译器和GNU Binutils移植到Win32平台下的产物 包括一系
  • 计算机毕业设计Java平面设计作品管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java平面设计作品管理系统 源码 系统 mysql数据库 lw文档 计算机毕业设计Java平面设计作品管理系统 源码 系统 mysql数据库 lw文档 本源码技术栈 项目架构 B S架构 开发语言 Java语言 开发软件 i
  • angular自带的一些api_在angular 2中使用HTTP Rest API

    小编典典 提供的很好的答案 但是我想补充一点 所以发布作为答案 首先 要使用Rest API 我们需要导入Http和HTTP PROVIDERS模块 当我们谈论Http时 第一步显然是 但是 是的HTTP PROVIDERS 在bootst
  • 为Linux的cp和mv命令添加进度条

    为Linux的cp和mv命令添加进度条 cp和mv可能是大家日常中使用最多的Linux命令之一 但是有一个突出的问题是这两个命令都不会有任何提示信息 这在操作大文件时候只能干等 可能大家对此已经习以为常 但是其实上也有解决解决方法 本文我们
  • Spice-server源码简要分析

    下载地址 https www spice space org download releases spice server spice 0 14 1 tar bz2 也可以在gitlab下载 https gitlab com spice s
  • LocalDate,LocalDateTime,Date及时间戳的转换

    1 时间戳转LocalDateTime 时间戳如果是字符串则先转为long LocalDateTime localDateTime LocalDateTime ofEpochSecond System currentTimeMillis 1
  • Kendo UI开发教程(16): Kendo MVVM 数据绑定(五) Events

    本篇和Kendo UI开发教程 14 Kendo MVVM 数据绑定 三 Click类似 为事件绑定的一般形式 Events绑定支持将ViewModel的方法绑定到DOM元素的事件处理 如鼠标事件 例如 1
  • c++中管道代码_如何在管道中添加动态代码分析

    c 中管道代码 我们大多数人都对著名的马克 扎克伯格宣言 快速行动并打破事物 非常熟悉 在2014年 这是一个非常大胆的声明 正如扎克伯格很快意识到的那样 可能太过大胆了 后来他撤回了它 表明了他想要快速行动但保持稳定的新愿望 为了更好地解
  • layui复选框

    效果图 layui复选框 一个主的复选框控制多个从复选框 主复选框和从复选框的颜色不一样 layui复选框的样式 都是在选然后才会有的 所以直接通过css设置就实现不了了 只可以通过js动态设置 html代码使用了jfinal的模板 div
  • C++之string

    一些简单的关于string对象的知识 以后还会补充 1 2 3 4 5 6 7 8 9 10 11
  • 详解C结构体、C++结构体 和 C++类的区别

    先来说说C和C 中结构体的不同 a C语言中的结构体不能为空 否则会报错 1 gt d myproject visual studio 2013 projects myc main c 71 error C2016 C 要求一个结构或联合至
  • IP地址学习总结

    IP地址 IP地址是局域网中某台主机的唯一标识 一段二进制编码 由32位组成 但是通常使用点分十进制来表示 便于记忆 x x x x 子网掩码 在同一局域网中 所有的IP必须在同一网段才能相互通信 而子网掩码用来标识是属于哪一个网段 确定I
  • uniapp - 实现微信小程序电子签名板,横屏手写姓名签名专用写字画板(详细运行示例,一键复制开箱即用)

    效果图 实现了在uniapp项目中 微信小程序平台流畅的写字签名板 也可以绘图 功能源码 复制粘贴 改改样式几分钟即可搞定 支持自动横屏 持预览 真机运行测试非常流畅不卡顿 基础模板 如下代码所示
  • Harbor镜像仓库搭建

    1 安装docker comprose docker comprose是docker容器批量管理工具 curl L https get daocloud io docker compose releases download 1 25 0
  • Unity3d 物体速度、运动的控制——Input.GetAxis、transform.Translate、transform.Rotate、AddForce

    首先介绍Input GetAxis方法 官方文档给出的解释为 Returns the value of the virtual axis identified by axisName 返回根据参数名所指定的虚拟轴上的数值 public st