首页 > 其他分享 >unity的移动方式

unity的移动方式

时间:2024-09-22 09:24:02浏览次数:12  
标签:鼠标 方式 ForceMode unity Input 移动 Mouse Unity

关于unity获取外设的输出:

Input.GetAxis 或Input.GetAxisRaw是 Unity 引擎中的一个方法,用于获取用户输入设备(如键盘、鼠标、游戏手柄等)的模拟值。它通常用于处理平滑的输入,比如移动、旋转和缩放。

[GetAxis 返回一个介于 -1 和 1 之间的浮点数值,表示输入设备的状态。]

[如果需要处理瞬时输入,可以使用 Input.GetAxisRaw,它返回的值是 -1、0 或 1,没有过渡效果]

可视化界面:Edit -> Project Settings -> Input

C#脚本:Input.GetAxis(“轴名称”);

(大部分情况,就只用Horizontal/Vertiacl,Mouse X/MOus Y)

只有18种轴名称

·  Horizontal:水平轴,通常映射到键盘的箭头键(左/右)或 A 和 D 键,或游戏手柄的左摇杆。

·  Vertical:垂直轴,通常映射到键盘的箭头键(上/下)或 W 和 S 键,或游戏手柄的左摇杆。

·  Mouse X:鼠标在 X 轴上的移动。

·  Mouse Y:鼠标在 Y 轴上的移动。

·  Jump:跳跃按钮,通常映射到键盘的空格键。

·  Mouse ScrollWheel:鼠标滚轮的滚动,用于缩放视图或切换武器等。

·  Fire1/Fire2:鼠标左/右键。

·  Fire3:通常映射到控制器的 X 按钮或键盘的 C 键

·  Submit/Cancel:enter/Esc键,提交或确认菜单/退出关闭界面

一,character control

是 Unity 引擎中的一个组件,用于处理角色的移动和碰撞检测

{关于碰撞检测是自动的,rigidbody不能共存}

具体操作:

可视化界面:需要增加组件 <charactor control>

C#脚本:头文件unityEngine

定义移动器变量

Charactorcontrol control;

 获取组件为变量赋值

Control = this.GetComponent<CharacterController>();

API:

Move :按给定的运动向量移动角色,并处理所有的碰撞。

{自己定义重力}

SimpleMove:以给定的速度移动角色,并处理所有的碰撞,并自动应用重力。

{simpleMove由于受重力影响,且不能修改重力的值,所以跳跃一般使用Move}

IsGrounded:判断是否在面上

二 Translate

Transform.Translate:在当前位置的基础上移动vector3大小的位移!

(直接移动)

如果每次移动的值小,可以实现平滑位移

三rigidbody.AddForce

// 可以在Start中立即施加力,或者在其他地方如Update中根据条件施加  

        Rigidbody rb = GetComponent<Rigidbody>();  

        rb.AddForce(new Vector3(force, 0, 0)); // 在X轴方向上施加力  

【tip】使用刚体移动,等在rigibody组件中加约束,这样角色就不受力乱飞

【tip】使用rigibody需要将代码放在fixedupdate里

参数:

力的向量(Vector3

这是你想要施加的力的方向和大小的表示。

例如,new Vector3(1, 0, 0)表示一个沿X轴正方向、大小为1的力。

力的模式(ForceMode枚举)

ForceMode.Force:这是默认模式。力会持续地影响物体,直到它被其他力或物理效果(如摩擦力)抵消。这通常用于模拟持续的力,如重力或风力。

ForceMode.Impulse:在这个模式下,力被视为一个瞬间的冲量,它会在极短的时间内改变物体的速度。这适用于模拟如子弹撞击或爆炸等瞬间的力。

ForceMode.VelocityChange:这个模式直接将速度变化应用到物体上,而不是作为力。这意味着它不会受到物体质量的影响,因为质量已经在计算速度变化时被考虑过了。这可以用于精确控制物体的速度。

ForceMode.Acceleration:这个模式实际上在Unity的Rigidbody.AddForce()方法中并不直接支持。它更多地是与理论物理相关,但在Unity中,你可以通过调整力的持续时间和大小来模拟加速度效果。

四:ray+translate

使用方式与Transform.Translate相同,但是目标终点是通过射线检测判断!

五:使用动作自带的移动

打开动作的apply motion root

六:自动寻路

使用Nav组件,同时将地图设为static

需要从Asset的商店下载Navgation.AI

标签:鼠标,方式,ForceMode,unity,Input,移动,Mouse,Unity
From: https://blog.csdn.net/2201_75540499/article/details/142357508

相关文章

  • 操作系统:线程间通信方式(下)——信号量机制 (Semaphore) 与信号机制 (Signal)
    操作系统:线程间通信方式(下)——信号量机制(Semaphore)与信号机制(Signal)在多线程编程中,线程间的通信与同步至关重要。信号量机制(Semaphore)和信号机制(Signal)是两种常见且重要的线程间通信方式,它们各自解决不同场景下的线程控制问题。本文将详细介绍信号量和信号的基本概......
  • synchronized 几种使用方式
    同步方法由于Java的每个对象都有一个内置锁,当synchronized关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态publicclassTest{/***这种方式是对象锁。普通实例方法默认同步监视器就是this,即调用该方法的对象*/......
  • k8s集群更新证书(kubeadm方式部署的集群)
    特别注意:证书到期前替换!!!先查看有哪些证书即将过期点击查看代码foritemin`find/etc/kubernetes/pki-maxdepth2-name"*.crt"`;doopensslx509-initem-text-noout|grepNot;echo======================item===============;doneforfin(ls/etc/kubernetes/......
  • C#|.net core 基础 - 深拷贝的五大类N种实现方式
    在实际应用中经常会有这样的需求:获取一个与原对象数据相同但是独立于原对象的精准副本,简单来说就是克隆一份,拷贝一份,复制一份和原对象一样的对象,但是两者各种修改不能互相影响。这一行为也叫深克隆,深拷贝。在C#里拷贝对象是一个看似简单实则相当复杂的事情,因此我不建议自己去做......
  • 【掌桥科研-注册安全分析报告-无验证方式导致安全隐患】
    前言由于网站注册入口容易被黑客攻击,存在如下安全问题:1.暴力破解密码,造成用户信息泄露2.短信盗刷的安全问题,影响业务及导致用户投诉3.带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞所以大部分网站及App都采取图形验证码或滑动验证码等交互解决方案,但在机......
  • kafka 消息位移提交几种方式:消息重复消息、消息丢失的关键
    消费位移Kafka中的位移(offset)是用来记录消息在分区中的位置的标志,简单说就是记录消费者的消费进度,每次消息消费后需要更新消费进度,也就是位移提交由此可见一旦位移提交发生异常,会导致消费进度不正确,就必然发生消息丢失或者重复消费消息位移存储内部主题__consumer_off......
  • ElasticSearch的搜索方式
    目录目录前言数据准备文档搜索一、查询所有文档二、全文检索(1)全文检索(2)自动纠错三、范围搜索四、短语检索五、单词/词组搜索六、复合搜索前言数据准备PUT/students{"mappings":{"properties":{"id":{"type":"integer",......
  • 《让手机秒变超级电脑!ToDesk云电脑、易腾云、青椒云移动端评测》
    前言科技发展到如今2024年,可以说每一年都在发生翻天覆地的变化。而云上这个词时常都被大家提起,从个人设备连接到云端在如今在也不是梦了。而云电脑这个市场近年来迅速发展,无需购买和维护额外的硬件就可以体验到电脑端顶配的性能和体验,并且移动端也可以带来非凡体验。我们在外出办......
  • 文字的编码方式————不同UTF之间的区别
    1.编码与字体    对于同一个字符,在文件中保存的是他的编码值,这些文字什么形态,是由字符文件决定的。编码值和字体是两个不一样的东西,例如B的编码值是0x42,但是在屏幕上显示出来时,可以有不同形状,如繁体字与简体中文的区别。        什么叫编码?就是一个字符用什......
  • FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
    ​EasyPusher是一款国产的RTSP直播录制推流客户端工具,它支持Windows、Linux、Android、iOS等操作系统。EasyPusher采用RTSP推流协议,其中安卓版EasyPusher的Github托管地址为https://github.com/EasyDarwin/EasyPusher-Android。不过EasyPusher有好几年没更新了,尤其安卓版的EasyP......