EasyJoyStick使用以及两种操作杆 EasyJoyStick的使用方法,简单的不能再简单 Hedgehog Team-》Easy Touch -》Add Easy Touch For C#
生活随笔
收集整理的這篇文章主要介紹了
EasyJoyStick使用以及两种操作杆 EasyJoyStick的使用方法,简单的不能再简单 Hedgehog Team-》Easy Touch -》Add Easy Touch For C#
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
EasyJoyStick使用以及兩種操作桿
EasyJoyStick的使用方法,簡單的不能再簡單
Hedgehog Team-》Easy Touch -》Add Easy Touch For C# Hedgehog Team-》Easy Touch -》Extensions-》Adding A New Joystick
配置如圖:
然后看一下配置,我喜歡掌控性強一些,于是只利用到JoyStick傳回來的值,也就是一個Vector2向量。 在PlayerController也就是控制器腳本上加一個引用,然后在Update中接受值即可。
代碼:?Vector2?axis?=?joystick.JoystickAxis;?
如果想要實現(xiàn)動態(tài)操作桿,只需要把 DynamicJoystick 口?挑上就行。 別的沒什么難點了。
如果想限制動態(tài)操作桿的有效區(qū)域設(shè)置器Free Area即可。
兩種移動方式解析
(1)直觀移動方式:
轉(zhuǎn)向立刻生效,指哪走哪 這種比較簡單,直接獲取方向向量,乘以速度即可
??? ??
(2)漸變轉(zhuǎn)向移動方式: 在這種方式下,如果你向前走,突然把遙桿向后拉,物件不會直接向后移動,而是會轉(zhuǎn)一個彎,逐漸轉(zhuǎn)向到目標方向,然后移動。
上面的代碼,本質(zhì)上講,把移動分解成向前移動,和向拉桿指向方向,逐漸轉(zhuǎn)向。
這里有兩個要點, 1是計算操作桿方向和當前物件移動方向的夾角。 利用向量夾角公式計算,也就是通過兩個向量的點積計算。
2是計算物件應(yīng)該延那個方向進行轉(zhuǎn)向,換句話說,需要判斷物件應(yīng)該順時針轉(zhuǎn)過去,還是要逆時針轉(zhuǎn)過去 這里如果不做處理,那么轉(zhuǎn)向的時候,會出現(xiàn)問題,比如你明明只想向左轉(zhuǎn)60度,卻向右轉(zhuǎn)了300度
這里利用到了叉乘的概念,兩個向量叉乘,其z軸的值的正負,可以判斷兩個向量的順時針,逆時針相對角度關(guān)系。
Hedgehog Team-》Easy Touch -》Add Easy Touch For C# Hedgehog Team-》Easy Touch -》Extensions-》Adding A New Joystick
配置如圖:
然后看一下配置,我喜歡掌控性強一些,于是只利用到JoyStick傳回來的值,也就是一個Vector2向量。 在PlayerController也就是控制器腳本上加一個引用,然后在Update中接受值即可。
代碼:?Vector2?axis?=?joystick.JoystickAxis;?
如果想要實現(xiàn)動態(tài)操作桿,只需要把 DynamicJoystick 口?挑上就行。 別的沒什么難點了。
如果想限制動態(tài)操作桿的有效區(qū)域設(shè)置器Free Area即可。
兩種移動方式解析
(1)直觀移動方式:
轉(zhuǎ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)向移動方式: 在這種方式下,如果你向前走,突然把遙桿向后拉,物件不會直接向后移動,而是會轉(zhuǎn)一個彎,逐漸轉(zhuǎn)向到目標方向,然后移動。
| 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); //防抖動 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; |
這里有兩個要點, 1是計算操作桿方向和當前物件移動方向的夾角。 利用向量夾角公式計算,也就是通過兩個向量的點積計算。
2是計算物件應(yīng)該延那個方向進行轉(zhuǎn)向,換句話說,需要判斷物件應(yīng)該順時針轉(zhuǎn)過去,還是要逆時針轉(zhuǎn)過去 這里如果不做處理,那么轉(zhuǎn)向的時候,會出現(xiàn)問題,比如你明明只想向左轉(zhuǎn)60度,卻向右轉(zhuǎn)了300度
這里利用到了叉乘的概念,兩個向量叉乘,其z軸的值的正負,可以判斷兩個向量的順時針,逆時針相對角度關(guān)系。
總結(jié)
以上是生活随笔為你收集整理的EasyJoyStick使用以及两种操作杆 EasyJoyStick的使用方法,简单的不能再简单 Hedgehog Team-》Easy Touch -》Add Easy Touch For C#的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: void Update ( ) 更新
- 下一篇: C# 获取句柄程序