Ich habe einen virtuellen Joystick in Unity erstellt. Irgendwie reagiert es nicht. Die Ereignisse OnPointerDown
, OnPointerUp
und OnDrag
werden vom Debugger nie eingegeben. Unity Virtual Joystick reagiert nicht
Dies ist eine Ansicht meiner Inspektor Einstellungen
Und dies ist mein Code, wie Sie sehen können, habe ich eine Datenklasse für einige Daten und nennen Sie es in der Controller-Klasse.
public class VirtualJoystickData
{
private Vector3 inputVector = Vector3.zero;
public Vector3 InputVector { get { return inputVector; } set { inputVector = value; } } // the movementDirection
private Image joystickBackgroundImage = GameObject.FindGameObjectWithTag("JoystickBackGroundImage").GetComponent<Image>(); // the joysticks background
public Image JoystickBackgroundImage { get { return joystickBackgroundImage; } }
private Image joystickImage = GameObject.FindGameObjectWithTag("Joystick").GetComponent<Image>(); // the joystick object to use
public Image JoystickImage { get { return joystickImage; } }
}
public class VirtualJoystickController : Monobehaviour, IDragHandler, IPointerUpHandler, IPointerDownHandler
{
private VirtualJoystickData data; // reference to the data class
private void Start()
{
data = new VirtualJoystickData();
}
public virtual void OnPointerDown(PointerEventData e) // Click the joystick
{
OnDrag(e);
}
public virtual void OnPointerUp(PointerEventData e) // leave the joystick
{
data.InputVector = Vector3.zero; // reset joystick
data.JoystickImage.rectTransform.anchoredPosition = Vector3.zero;
}
public virtual void OnDrag(PointerEventData e) // drag the joystick
{
Vector2 position;
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(data.JoystickBackgroundImage.rectTransform, e.position, e.pressEventCamera, out position)) // start dragging it
{
position.x = (position.x/data.JoystickBackgroundImage.rectTransform.sizeDelta.x);
position.y = (position.y/data.JoystickBackgroundImage.rectTransform.sizeDelta.y);
data.InputVector = new Vector3(position.x * 2 + 1, 0, position.y * 2 - 1);
data.InputVector = data.InputVector.magnitude > 1 ? data.InputVector.normalized : data.InputVector;
data.JoystickImage.rectTransform.anchoredPosition = new Vector3(
data.InputVector.x * (data.JoystickBackgroundImage.rectTransform.sizeDelta.x/3),
data.InputVector.z * (data.JoystickBackgroundImage.rectTransform.sizeDelta.y/3));
}
}
public float GetHorizontalInput()
{
return data.InputVector.x;
}
public float GetVerticalInput()
{
return data.InputVector.z;
}
}
Wäre toll, wenn mir hier jemand helfen könnte. Wenn ich versuche, den Joystick zu verwenden, nur nichts passiert ..
oh wow .. danke! wusste das nicht – Question3r
Np. für manche Leute ist es neu. – Programmer