国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

unity2022版本 實現(xiàn)手機虛擬操作桿

這篇具有很好參考價值的文章主要介紹了unity2022版本 實現(xiàn)手機虛擬操作桿。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

簡介

在許多移動游戲中,虛擬操縱桿是一個重要的用戶界面元素,用于控制角色或物體的移動。本文將介紹如何在Unity中實現(xiàn)虛擬操縱桿,提供了一段用于移動控制的代碼。我們將討論不同類型的虛擬操縱桿,如固定和跟隨,以及如何在實際游戲中使用這些操縱桿。

界面節(jié)點設置

1. 添加一個Canvas節(jié)點

首先,我們需要創(chuàng)建一個畫布節(jié)點,這是我們整個界面的基礎。這個節(jié)點將允許我們繪制和排列其他元素。

2. 在Canvas節(jié)點下添加一個Panel節(jié)點

接下來,我們將在Canvas節(jié)點下創(chuàng)建一個Panel節(jié)點。這個Panel節(jié)點將充當容器,用于組織和管理我們的界面元素。

3. 在Panel節(jié)點下添加兩個Image節(jié)點

在Panel節(jié)點中,我們將添加兩個Image節(jié)點。這兩個Image節(jié)點具有不同的用途:

a. 背景節(jié)點:第一個Image節(jié)點將用作背景,為整個界面提供背景圖像或顏色。

b. 操作按鈕節(jié)點:第二個Image節(jié)點將用于顯示操作按鈕或其他交互元素。

4. 結構示意圖:

你可以使用以下結構示意圖來更清晰地展示節(jié)點的層次關系:

UiCanvas (畫布)
│
└─ Joystick (面板)
   │
   ├─ Bg(背景)
   │
   └─ Btn(操作按鈕)

截圖可以這樣:

unity2022版本 實現(xiàn)手機虛擬操作桿,unity開發(fā),游戲,c#,unity,游戲開發(fā)

腳本編寫

簡要說明:

因為編寫的是虛擬操作桿 需要添加三個事件:

觸摸開始(Pointer Down),拖動(Drag),觸摸結束(Pointer Up)

在觸摸開始記錄拖動的一些起始坐標。

在拖動中移動操作按鈕節(jié)點如果是操作角色移動這里就可以操作移動角色

在觸摸結束的時候重置坐標

  1. PointerDown方法:描述PointerDown方法,它處理當玩家觸摸操縱桿時的行為。根據(jù)操縱桿類型(固定或跟隨),它設置操縱桿的初始位置。

  2. Drag方法:詳細解釋Drag方法,這是當玩家拖動操縱桿時執(zhí)行的代碼。說明如何計算操縱桿輸入的方向,以及如何限制操縱桿的移動范圍。

  3. PointerUp方法:描述PointerUp方法,用于當玩家釋放操縱桿時重置相關變量和位置,同時停止玩家的移動。

在初始化引用的時候可以傳入?yún)?shù)(JoystickType)控制虛擬操作桿是固定的還是跟隨觸摸點的

完整的腳本如下:

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class MovementJoystick : MonoBehaviour
{
    // 枚舉類型,用于指定操縱桿的類型
    public enum JoystickType
    {
        FIXED,    // 固定類型的操縱桿
        FOLLOW    // 跟隨類型的操縱桿
    }

    // 對操縱桿和其背景對象的引用
    public GameObject joystick;  // 操縱桿對象
    public GameObject joystickBG;  // 操縱桿背景對象

    // 存儲當前操縱桿的輸入值作為一個二維向量
    public Vector2 joystickVec;

    // 指定操縱桿的類型(固定或跟隨)
    public JoystickType joystickType = JoystickType.FIXED;

    // 觸摸操縱桿時的位置
    private Vector2 joystickTouchPos;

    // 操縱桿背景的原始位置
    private Vector2 joystickOriginalPos;

    // 操縱桿背景的半徑,根據(jù)屏幕寬度計算而來
    private float joystickRadius;

    // 初始化
    void Start()
    {
        // 初始化操縱桿背景的原始位置
        joystickOriginalPos = joystickBG.transform.position;

        // 根據(jù)屏幕寬度計算操縱桿背景的半徑
        joystickRadius = joystickBG.GetComponent<RectTransform>().sizeDelta.y * Screen.width / 800 / 2;
    }

    // 當玩家按下操縱桿時調用
    public void PointerDown()
    {
        if (joystickType == JoystickType.FIXED)
        {
            // 對于固定操縱桿,將觸摸位置設置為操縱桿背景的原始位置
            joystickTouchPos = joystickOriginalPos;
        }
        else if (joystickType == JoystickType.FOLLOW)
        {
            // 對于跟隨操縱桿,將操縱桿及其背景設置為觸摸位置
            joystick.transform.position = Input.mousePosition;
            joystickBG.transform.position = Input.mousePosition;
            joystickTouchPos = Input.mousePosition;
        }
    }

    // 當玩家拖動操縱桿時調用
    public void Drag(BaseEventData baseEventData)
    {
        // 將基本事件數(shù)據(jù)強制轉換為PointerEventData
        PointerEventData pointerEventData = (PointerEventData)baseEventData;

        // 獲取當前拖動位置
        Vector2 dragPos = pointerEventData.position;

        // 計算操縱桿輸入的方向
        joystickVec = (dragPos - joystickTouchPos).normalized;

        // 計算當前位置與觸摸位置之間的距離
        float joystickDist = Vector2.Distance(dragPos, joystickTouchPos);

        // 限制操縱桿在指定半徑范圍內移動
        if (joystickDist < joystickRadius)
        {
            joystick.transform.position = joystickTouchPos + joystickVec * joystickDist;
        }
        else
        {
            joystick.transform.position = joystickTouchPos + joystickVec * joystickRadius;
        }

        // 根據(jù)操縱桿輸入設置玩家的移動方向
        // HHSJ.Main.instance.PlayerEx.GetComponent<HHSJ.Player>().moveDir = dragPos - joystickTouchPos;
    }

    // 當玩家釋放操縱桿時調用
    public void PointerUp()
    {
        // 重置操縱桿輸入和位置到初始值
        joystickVec = Vector2.zero;
        joystick.transform.position = joystickOriginalPos;
        joystickBG.transform.position = joystickOriginalPos;

        // 將玩家的移動方向重置為零
        // HHSJ.Main.instance.PlayerEx.GetComponent<HHSJ.Player>().moveDir = Vector3.zero;
    }

    // 可以在這里添加其他方法和FixedUpdate以實現(xiàn)特定功能
}

大致效果如下:

unity2022版本 實現(xiàn)手機虛擬操作桿,unity開發(fā),游戲,c#,unity,游戲開發(fā)

社交:

QQ群:859055710?文章來源地址http://www.zghlxwxcb.cn/news/detail-715830.html

到了這里,關于unity2022版本 實現(xiàn)手機虛擬操作桿的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 手機端三維人體建模軟件-易模,為虛擬現(xiàn)實、游戲開發(fā)帶來新體驗

    手機端三維人體建模軟件-易模,為虛擬現(xiàn)實、游戲開發(fā)帶來新體驗

    三維人體建模是一種高級的數(shù)字技術,用于將人體的形態(tài)、肌肉、骨骼等三維信息轉化為數(shù)字模型。這項技術涵蓋了計算機圖像處理、計算機輔助設計等領域,具有廣泛的應用價值。通過三維人體建模,可以更好地理解人體的結構和功能,對于醫(yī)學研究、康復治療、運動仿真

    2024年02月08日
    瀏覽(26)
  • Unity手機游戲開發(fā):從搭建到發(fā)布上線全流程實戰(zhàn)

    Unity手機游戲開發(fā):從搭建到發(fā)布上線全流程實戰(zhàn)

    前言: 技術書籍是學習技術知識的重要資源之一。讀技術書可以幫助我們學習新技能和知識,技術書籍提供了可靠的、全面的信息,幫助我們快速學習新技能和知識。同時技術書籍有助于保持你的競爭力,因為它們提供了最新的技術知識和實踐。這在當今快速發(fā)展的技術領域

    2024年01月22日
    瀏覽(30)
  • 解決Unity游戲開發(fā)使用Visual Studio Enterprise 2022提示未找到目標框架.net framework4.7.1問題

    解決Unity游戲開發(fā)使用Visual Studio Enterprise 2022提示未找到目標框架.net framework4.7.1問題

    采用Visual Studio Installer安裝Visual Studio Enterprise 2022,安裝中勾選游戲下Unity游戲開發(fā)。 單個組件中確保勾選.NET Framework 4.7.1目標包 安裝位置自定義修改至F盤后使用Visual Studio Enterprise 2022登錄,在Unity設置使用Visual Studio Enterprise 2022并打開對應項目文件,提示未找到目標框架.net

    2024年02月10日
    瀏覽(31)
  • 微信小游戲開發(fā)之unity-精靈的創(chuàng)建動畫和操作移動

    微信小游戲開發(fā)之unity-精靈的創(chuàng)建動畫和操作移動

    我們的目標是通過unity開發(fā)微信小游戲! 這是第一篇正式實戰(zhàn)開發(fā)文章,將會很詳細介紹每一個步驟和代碼。 廢話不多說直接操作! 由于目標開發(fā)游戲是2D小游戲,我們選擇2D核心模板. 我們的目標是開發(fā)微信小游戲所以我們需要修改setting,選擇運行平臺選擇轉換 WebGL ,剛開

    2024年01月16日
    瀏覽(22)
  • [游戲開發(fā)][Unity] TPS射擊游戲相機實現(xiàn)

    [游戲開發(fā)][Unity] TPS射擊游戲相機實現(xiàn)

    滑屏控制 角色的橫向旋轉 相機的縱向旋轉(區(qū)別于橫向旋轉) 相機貼墻拉近(不能穿墻) 相機觀察旋轉(角色不轉相機轉用于觀察四周) 開火按鈕和旋轉屏幕功能共存(邊開槍邊轉向瞄準) 市面上的TPS射擊游戲基本上有兩種實現(xiàn)射擊瞄準 方案一:以槍口射擊方向為基準,相機跟著人

    2024年02月16日
    瀏覽(37)
  • Unity游戲開發(fā):場景切換的實現(xiàn)

    Unity游戲開發(fā):場景切換的實現(xiàn)

    在unity中可以將不同場景的背景和道具放置在不同的Scene當中,通過對Scene的加載和卸載來實現(xiàn)場景之間的切換。同時創(chuàng)建一個基礎場景(Control Scene)來對整個游戲系統(tǒng)進行管理,在基礎場景(Control Scene)中不放置背景圖片或者游戲道具而只添加各種控制單元和Canvas。 在場景

    2024年02月15日
    瀏覽(19)
  • [游戲開發(fā)]Unity紅點系統(tǒng)_樹實現(xiàn)

    剛好處理到紅點系統(tǒng)的問題,就寫個文章記錄一下。本文的紅點系統(tǒng)為一個 樹 結構,UI實現(xiàn)需要和紅點運行邏輯剝離,防止過度耦合,現(xiàn)在就暫時不提及,后續(xù)在講述。 紅點是游戲中一種常見且重要的提醒方式,通常涉及到很多方面信息和界面的顯示,如果不做成獨立的系

    2024年02月06日
    瀏覽(16)
  • Unity開發(fā)日記-進入游戲按鈕和退出游戲按鈕的邏輯實現(xiàn)

    Unity開發(fā)日記-進入游戲按鈕和退出游戲按鈕的邏輯實現(xiàn)

    本篇文章只是總結一下UGUI中進入游戲和退出游戲的邏輯代碼的兩種實現(xiàn)方式,方便以后查閱,以后如果有其他的方法也會隨時更新(Unity版本為2021) 首先是在UI的Image(背景圖)上掛載腳本 代碼如下 兩種方法各有各的好。方法一代碼量少但項目大的時候管理比較麻煩;方法

    2024年02月11日
    瀏覽(84)
  • unity使用PhotonEngine實現(xiàn)多人聯(lián)機游戲開發(fā)(一)

    unity使用PhotonEngine實現(xiàn)多人聯(lián)機游戲開發(fā)(一)

    先來了解一下PhotonEngine(光子引擎),這是德國ExitGame公司開發(fā)的網(wǎng)絡引擎,photonengine簡單易上手,很多游戲公司開發(fā)的網(wǎng)絡游戲都是使用的這個。這個網(wǎng)絡引擎里面包括了PhotonCloud(光子云)、photonServer(光子服務器)、PhotonQuantum(確定性量子引擎)、PhotonVoice(光子語音)

    2024年02月07日
    瀏覽(29)
  • Unity 游戲開發(fā)、01 基礎知識大全、簡單功能腳本實現(xiàn)

    Unity默認窗口布局 Hierarchy 層級窗口 Scene 場景窗口,3D視圖窗口 Game 游戲播放窗口 Inspector 檢查器窗口,屬性窗口 Project 項目窗口 Console 控制臺窗口 恢復默認布局 Window | Layouts | Default 調大頁面字體 Preference | UI Scaling 新項目默認創(chuàng)建了 SampleScene 場景 {攝像機,平行光} SampleScen

    2024年02月09日
    瀏覽(55)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包