1. 程式人生 > >Unity+FairyGUI)rpg方向控制的方向盤控制/搖桿

Unity+FairyGUI)rpg方向控制的方向盤控制/搖桿

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using FairyGUI;
using Package1;

namespace Assets.Scripts
{
    class Wheel : UIBase
    {
        private float rad = 200f; //活動半徑
        private Vector2 center = new Vector2(200, 200);//中心

        private Vector2 resultVector2;//結果

        private UI_WheelCenter center_ui;

        override public void init()
        {            
            center_ui = ((UI_Wheel)this.ui).m_center_ui;
            center_ui.draggable = true;

            center_ui.onDragStart.Add(dragStartHandler);
            center_ui.onDragEnd.Add(dragEndHandler);
            center_ui.onDragMove.Add(dragMoveHandler);
        }

        private void dragEndHandler() {
            center_ui.x = center.x;
            center_ui.y = center.y;
            MoveManager.getInstance().moveAngle = 0;
        }

        private void dragStartHandler() {
            
        }

        private void dragMoveHandler(EventContext _event) {
           
            Vector2 cur = new Vector2(center_ui.x, center_ui.y);

            float dis = Vector2.Distance(center, cur);
            float ang = Mathf.Atan((cur.y - center.y) / (cur.x - center.x));
            if (ang < 0)
            {
                if (cur.x < center.x)
                {
                    ang += Mathf.PI;
                }
                else
                {
                    ang += 2 * Mathf.PI;
                }
            }
            else
            {
                if (cur.x < center.x)
                {
                    ang += Mathf.PI;
                }
            }
            //Debug.Log("羅盤角度=" + Mathf.Rad2Deg * ang + ",座標=" + cur.x +"," +cur.y);
            MoveManager.getInstance().moveAngle = ang;

            if (dis > rad*2)
            {                
                center_ui.x = center.x + rad * Mathf.Cos(ang);
                center_ui.y = center.y + rad * Mathf.Sin(ang);
            }
            else {
                Vector2 touchVec = new Vector2(_event.inputEvent.x, _event.inputEvent.y);
                Vector2 newVec = this.ui.GlobalToLocal(touchVec);
                center_ui.x = newVec.x;
                center_ui.y = newVec.y;
            }

            MoveManager.getInstance().breakLock();
        }
    }
}

相關推薦

Unity+FairyGUIrpg方向控制方向盤控制/

using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnityEngine; using FairyGUI; using Package1;

如何在unity裡建立一個簡單酷炫的

介紹 由於聽說unity自帶的虛擬搖桿非常不好用,所以本博主選擇使用easy touch裡面的搖桿控制元件,親測easy touch裡面的joystick確實比較好用。 我的unity版本是5.5的

unity方向鍵來控制角色上樓梯

自動尋路可以實現角色自動到任意的地方,也可以上樓,可我希望通過方向鍵來實現角色的移動和上樓梯。可是不同的樓梯有不同的臺階高度,若給他設定一個固定的值。那麼使用起來不方便,而且在判斷上樓還是下樓時比較難

Unity3D之Mecanim動畫系統學習筆記(六:使用腳本控制動畫

ont nim 復制代碼 info rip esc enter machine images 控制人物動畫播放 這裏我重新弄了一個簡單的場景和新的Animator Controller來作為示例。 下面先看看Animator Controller的配置: 人物在站

八(2管道符和作業控制、shell變量、環境變量配置文件

shell變量管道符、作業控制管道符 | :把前面命令的的輸出交給後面命令的輸入暫停任務:ctrl+ z (臨時暫停,仍到後臺 ,調回前臺 fg)jobs 可以把暫停的任務列出來。fg +id號就能把相應暫停任務調回前臺。 fg 2bg 把任務放到後臺sleep 1000 暫停1000秒sleep 100

Linux學習筆記(二十四管道符和作業控制、shell變量、環境變量配置文件

環境變量配置文件 管道符 一、管道符和作業控制cat 1.txt |wc -l ; cat 1.txt |grep ‘aaa‘將前面命令的結果輸入給後面的命令ctrl z 暫停一個任務、這時候任務隱藏到後臺,通過fg可以重新吊起任務到前臺運行jobs查看後臺的任務bg[id]把任務調到後臺fg[id]

unity實用技能】unity3d 陀螺儀控制camera移動旋轉

無https://docs.unity3d.com/ScriptReference/Gyroscope.html unity 官方文檔就很清楚,只有一點要註意: 所有教程都教你怎麽用 input.gyro.attitude 但是這個表示的是空間中的位置,首先你是想做像王者榮耀開頭晃動攝像機的效果,需要把上個位

(二上交無人機比賽 基本控制-2控制添加

spa IV time mov period () static RM second 已有的為功能 namespace msr { namespace airlib { typedef msr::airlib_rpclib::MultirotorRpcL

Linux(RadHat基礎學習—系統服務控制及sshd服務

遠程 51cto 確認密碼 指定 認證 當前 開始 oot conn 1.系統服務 1.什麽是服務 系統服務(system services)是指執行指定系統功能的程序、例程或進程,以便支持其他程序,尤其是底層(接近硬件)程序。通過網絡提供服務時,服務可以在Active D

Openstack入門篇(十一之neutron服務(控制節點的部署與測試

驅動 username 禁止 普通 虛擬主機 group 查看 禁用 poi 1.Neutron的介紹   Neutron 為整個 OpenStack 環境提供網絡支持,包括二層交換,三層路由,負載均衡,防火墻和 *** 等。Neutron 提供了一個靈

Python從菜鳥到高手(2:清空Python控制

cls stdout 聲明 交互 打開 成功 html 重新 指向 執行python命令會進入Python控制臺。在Python控制臺中可以用交互的方式執行Python語句。也就是執行一行Python語句,會立刻返回執行結果。 ??當Python控制臺輸入過多的Python

Java架構-JavaSE(四之介面、訪問控制

閱讀目錄(Content) 一、介面   1.1、介面與抽象類的區別   1.2、介面中的方法都是抽象方法   1.3、介面中的變數都是靜態常量(public static final修飾)   1.4、一個類可以實現多個介面     1.5、一個介面可以繼承多個父介面   1.6、

java基礎(二迴圈巢狀與控制跳轉

迴圈巢狀 package com.st.basis.day04; /* * 迴圈巢狀 * 外層控制行數 * 內層控制列數 * */ public class LoopNesting { public static void main(String[] args) { //

closeHandle(多次關閉同一個控制代碼會導致程式奔潰

自己寫了一個升級小工具,在程式結束打算關閉時,竟然奔潰了,最後定位到了 wrHandle =devhandle; rdHandle = devhandle; if(wrHandle != INVALID_HANDLE_VALUE){ CloseHandle(wrHandle)

(轉C# 自定義使用者控制元件

C# 自定義使用者控制元件   轉:https://blog.csdn.net/xiongxuanwen/article/details/2605109 本例是製作一個簡單的自定義控制元件,然後用一個簡單的測試程式,對於初學者來說,本例子比較簡單,只能起到拋石引玉的效

【NOIP2012提高】藍書(演算法競賽進階指南刷題記錄——疫情控制(二分+樹上倍增+貪心

題目:luogu1084. 題目大意:給定一棵樹,以及一些在樹上的軍隊.現在這些軍隊可以走動,並能在點上駐紮,從一條邊的一段走到另一端需要與這條的長度等價的時間.現在要求用最短的時間,使得所有葉子節點到根節點的路徑上有軍隊,且軍隊不能在根節點駐紮. 由於我們肯定更想讓一個點覆蓋的葉子節點

我的第一個python web開發框架(39——後臺介面許可權訪問控制處理

1 @get('/api/main/menu_info/') 2 def callback(): 3 """ 4 主頁面獲取選單列表資料 5 """ 6 # 獲取當前使用者許可權 7 session = web_helper.get_ses

強化學習(七時序差分離線控制演算法Q-Learning

    在強化學習(六)時序差分線上控制演算法SARSA中我們討論了時序差分的線上控制演算法SARSA,而另一類時序差分的離線控制演算法還沒有討論,因此本文我們關注於時序差分離線控制演算法,主要是經典的Q-Learning演算法。     Q-Learning這一篇對應Sutton書的第六章部分和UCL強化學

(ArduinoESP8266通過區域網通訊控制LED

接線參考https://blog.csdn.net/jackhuang2015/article/details/45015691 要達到的效果是用你的電腦或者手機通過區域網去把訊號傳輸給ESP8266,讓8266控制LED燈閃爍。 首先你要下載一個Arduino