unity虚拟摇杆控制的实现
生活随笔
收集整理的這篇文章主要介紹了
unity虚拟摇杆控制的实现
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、前言
手機游戲,經(jīng)常會用到搖桿來控制角色,本文記錄了如何在unity中用比較簡單的方法制作搖桿,并且實現(xiàn)搖桿控制角色左右移動。
二、需要繼承的類
- ScrollRect(滾動類,一般用于實現(xiàn)UI的拖拽滾動,包含在UnityEngine.UI中)
- IPointerDownHandler(指針按下類,實現(xiàn)接口檢測指針是否按下,包含在UnityEngine.EventSystems中)
- IPointerUpHandler(指針抬起類,實現(xiàn)接口檢測指針是否抬起,需要和IPointerDownHandler的接口一起實現(xiàn)才會發(fā)揮作用,包含在UnityEngine.EventSystems中)
三、虛擬搖桿的制作
需要圖片:
- 虛擬搖桿的背景圖
- 搖桿圖
在canvas中新建一個image對象,把虛擬搖桿的背景圖放上去,在該對象中新建一個子image作為搖桿,把搖桿圖放上去,調(diào)整好大小和位置即可。
?四、搖桿控制角色移動
新建一個腳本Stick,輸入以下代碼,掛載到搖桿背景上,并把搖桿對象拖到腳本的content處。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public class Stick : ScrollRect,IPointerUpHandler,IPointerDownHandler {protected float mRadius = 0f;//搖桿范圍半徑protected override void Start(){base.Start();//原start方法//計算搖桿范圍半徑mRadius = (transform as RectTransform).sizeDelta.x * 0.45f;}public override void OnDrag(PointerEventData eventData){base.OnDrag(eventData);//原onDrag方法//搖桿位置var contentPosition = content.anchoredPosition;if (contentPosition.x > 0){//在此寫控制角色右移邏輯}else if(contentPosition.x < 0){//在此寫控制角色左移邏輯}else{//在此寫控制角色停止移動邏輯}//如果搖桿位置超出范圍,則限制在范圍內(nèi)if(contentPosition.magnitude > mRadius){contentPosition = contentPosition.normalized * mRadius;SetContentAnchoredPosition(contentPosition);}}public void OnPointerDown(PointerEventData eventData){//這個接口需要實現(xiàn)用來檢測指針是否點擊,什么都不寫也行,有就ok}public void OnPointerUp(PointerEventData eventData){//在此寫控制角色停止移動邏輯} }?
總結(jié)
以上是生活随笔為你收集整理的unity虚拟摇杆控制的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html电脑添加高德地图,vue-cli
- 下一篇: GB35114—④、附 录A、B