EasyJoyStick使用以及两种操作杆 EasyJoyStick的使用方法,简单的不能再简单 Hedgehog Team-》Easy Touch -》Add Easy Touch For C#
生活随笔
收集整理的這篇文章主要介紹了
EasyJoyStick使用以及两种操作杆 EasyJoyStick的使用方法,简单的不能再简单 Hedgehog Team-》Easy Touch -》Add Easy Touch For C#
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
EasyJoyStick使用以及兩種操作桿
EasyJoyStick的使用方法,簡(jiǎn)單的不能再簡(jiǎn)單
Hedgehog Team-》Easy Touch -》Add Easy Touch For C# Hedgehog Team-》Easy Touch -》Extensions-》Adding A New Joystick
配置如圖:
然后看一下配置,我喜歡掌控性強(qiáng)一些,于是只利用到JoyStick傳回來(lái)的值,也就是一個(gè)Vector2向量。 在PlayerController也就是控制器腳本上加一個(gè)引用,然后在Update中接受值即可。
代碼:?Vector2?axis?=?joystick.JoystickAxis;?
如果想要實(shí)現(xiàn)動(dòng)態(tài)操作桿,只需要把 DynamicJoystick 口?挑上就行。 別的沒(méi)什么難點(diǎn)了。
如果想限制動(dòng)態(tài)操作桿的有效區(qū)域設(shè)置器Free Area即可。
兩種移動(dòng)方式解析
(1)直觀移動(dòng)方式:
轉(zhuǎn)向立刻生效,指哪走哪 這種比較簡(jiǎn)單,直接獲取方向向量,乘以速度即可
??? ??
(2)漸變轉(zhuǎn)向移動(dòng)方式: 在這種方式下,如果你向前走,突然把遙桿向后拉,物件不會(huì)直接向后移動(dòng),而是會(huì)轉(zhuǎn)一個(gè)彎,逐漸轉(zhuǎn)向到目標(biāo)方向,然后移動(dòng)。
上面的代碼,本質(zhì)上講,把移動(dòng)分解成向前移動(dòng),和向拉桿指向方向,逐漸轉(zhuǎn)向。
這里有兩個(gè)要點(diǎn), 1是計(jì)算操作桿方向和當(dāng)前物件移動(dòng)方向的夾角。 利用向量夾角公式計(jì)算,也就是通過(guò)兩個(gè)向量的點(diǎn)積計(jì)算。
2是計(jì)算物件應(yīng)該延那個(gè)方向進(jìn)行轉(zhuǎn)向,換句話說(shuō),需要判斷物件應(yīng)該順時(shí)針轉(zhuǎn)過(guò)去,還是要逆時(shí)針轉(zhuǎn)過(guò)去 這里如果不做處理,那么轉(zhuǎn)向的時(shí)候,會(huì)出現(xiàn)問(wèn)題,比如你明明只想向左轉(zhuǎn)60度,卻向右轉(zhuǎn)了300度
這里利用到了叉乘的概念,兩個(gè)向量叉乘,其z軸的值的正負(fù),可以判斷兩個(gè)向量的順時(shí)針,逆時(shí)針相對(duì)角度關(guān)系。
Hedgehog Team-》Easy Touch -》Add Easy Touch For C# Hedgehog Team-》Easy Touch -》Extensions-》Adding A New Joystick
配置如圖:
然后看一下配置,我喜歡掌控性強(qiáng)一些,于是只利用到JoyStick傳回來(lái)的值,也就是一個(gè)Vector2向量。 在PlayerController也就是控制器腳本上加一個(gè)引用,然后在Update中接受值即可。
代碼:?Vector2?axis?=?joystick.JoystickAxis;?
如果想要實(shí)現(xiàn)動(dòng)態(tài)操作桿,只需要把 DynamicJoystick 口?挑上就行。 別的沒(méi)什么難點(diǎn)了。
如果想限制動(dòng)態(tài)操作桿的有效區(qū)域設(shè)置器Free Area即可。
兩種移動(dòng)方式解析
(1)直觀移動(dòng)方式:
轉(zhuǎn)向立刻生效,指哪走哪 這種比較簡(jiǎn)單,直接獲取方向向量,乘以速度即可
| Vector2?axis?=?joy_stick.JoystickAxis; float delta_x = axis.x * current_speed * Time.deltaTime; float delta_y = axis.y * current_speed * Time.deltaTime; transform.Translate( delta_x, delta_y, ? 0);? ? ? ? ? ?? |
(2)漸變轉(zhuǎn)向移動(dòng)方式: 在這種方式下,如果你向前走,突然把遙桿向后拉,物件不會(huì)直接向后移動(dòng),而是會(huì)轉(zhuǎn)一個(gè)彎,逐漸轉(zhuǎn)向到目標(biāo)方向,然后移動(dòng)。
| Vector3?normal?=?(Vector3)axis.normalized; float?cos_theta?=?Vector3.Dot(player_object.transform.up,?normal); float?theta?=?Mathf.Acos(cos_theta); ?float?rota?=?theta?*?axis.magnitude?*?((real_speed?>?player_data.normal_speed?+?0.1f)???player_data.turn_cof_normal?:?player_data.turn_cof_acc); //防抖動(dòng) if?(theta?>?0.1f)? { Vector3?old?= transform.eulerAngles; if?(Vector3.Cross(transform.up,?normal).z?>?0) { old.z?+=?rota; } else? { old.z?-=?rota; } transform.eulerAngles?=?old; } transform.position?+= transform.up?*?real_speed?*?Time.deltaTime; |
這里有兩個(gè)要點(diǎn), 1是計(jì)算操作桿方向和當(dāng)前物件移動(dòng)方向的夾角。 利用向量夾角公式計(jì)算,也就是通過(guò)兩個(gè)向量的點(diǎn)積計(jì)算。
2是計(jì)算物件應(yīng)該延那個(gè)方向進(jìn)行轉(zhuǎn)向,換句話說(shuō),需要判斷物件應(yīng)該順時(shí)針轉(zhuǎn)過(guò)去,還是要逆時(shí)針轉(zhuǎn)過(guò)去 這里如果不做處理,那么轉(zhuǎn)向的時(shí)候,會(huì)出現(xiàn)問(wèn)題,比如你明明只想向左轉(zhuǎn)60度,卻向右轉(zhuǎn)了300度
這里利用到了叉乘的概念,兩個(gè)向量叉乘,其z軸的值的正負(fù),可以判斷兩個(gè)向量的順時(shí)針,逆時(shí)針相對(duì)角度關(guān)系。
總結(jié)
以上是生活随笔為你收集整理的EasyJoyStick使用以及两种操作杆 EasyJoyStick的使用方法,简单的不能再简单 Hedgehog Team-》Easy Touch -》Add Easy Touch For C#的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: void Update ( ) 更新
- 下一篇: 9 月 19 日,腾讯云安全中心监测到