Quantcast
Channel: Questions in topic: "issue"
Viewing all articles
Browse latest Browse all 827

Dual Stick Issues with mobile

$
0
0
I am making a dual stick shooter for mobile. I got joysticks that work fine, but there is a small issue. While holding the "move" joystick, I can additionally hold and move the "aim" joystick, but if I am holding the "aim" joystick and then try to grab the "move" joystick, I am unable to. I am wondering if it is an issue with event system input, and if there is any way of fixing it. Script here: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; public class VirtuaJoystick : MonoBehaviour, IDragHandler, IPointerUpHandler, IPointerDownHandler { private Image bgImg; public Image joystickImg; public Player PlayerScript; public bool HoldInputAfterPointUp = false; public bool IsPressed = false; public Vector3 InputDirection{ set; get; } public Vector3 IDA; public string JoystickIdentity = ""; private void Start() { bgImg = GetComponent(); InputDirection = Vector3.zero; } public virtual void OnDrag(PointerEventData ped) { Vector2 pos = Vector2.zero; if(RectTransformUtility.ScreenPointToLocalPointInRectangle (bgImg.rectTransform, ped.position, ped.pressEventCamera, out pos)) pos.x = (pos.x / bgImg.rectTransform.sizeDelta.x); pos.y = (pos.y / bgImg.rectTransform.sizeDelta.y); float x = (bgImg.rectTransform.pivot.x == 1) ? pos.x * 2 + 1 : pos.x * 2 - 1; float y = (bgImg.rectTransform.pivot.y == 1) ? pos.y * 2 + 1 : pos.y * 2 - 1; InputDirection = new Vector3(x, y, 0); InputDirection = (InputDirection.magnitude > 1) ? InputDirection.normalized : InputDirection; IDA = (InputDirection.magnitude > 1) ? InputDirection.normalized : InputDirection; joystickImg.rectTransform.anchoredPosition = new Vector3(InputDirection.x * (bgImg.rectTransform.sizeDelta.x / 3), InputDirection.y * (bgImg.rectTransform.sizeDelta.y / 3)); PlayerScript.CurrentJoystickInput = JoystickIdentity; } public virtual void OnPointerDown(PointerEventData ped) { OnDrag(ped); IsPressed = true; } public virtual void OnPointerUp(PointerEventData ped) { IsPressed = false; OnDrag(ped); //PlayerScript.AimInputDirSave = InputDirection; if(!HoldInputAfterPointUp) { InputDirection = Vector3.zero; } joystickImg.rectTransform.anchoredPosition = Vector3.zero; } } Thanks Unity Community!

Viewing all articles
Browse latest Browse all 827

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>