@Gera01
Unity, С# и больше ничего.

Можете ли вы помочь с кодом (C# + Unity)?

КОД:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class MobelController : MonoBehaviour,IDragHandler,IPointerUpHandler, IPointerDownHandler {

    private Image joysticBG;
    [SerializeField]
    private Image joystic;
    private Vector2 inputVector;

    private void Start()
    {
        joysticBG = GetComponent<Image>();
        joystic = transform.GetChild(0).GetComponent<Image>();
    }

    public virtual void OnPointerDown(PointerEventData ped)
    {
        OnDrag(ped);
    }
    public virtual void OnPointerUp(PointerEventData ped)
    {
        inputVector = Vector2.zero;
        joystic.rectTransform.anchoredPosition = Vector2.zero;
    }
    public virtual void OnDrag(PointerEventData ped)
    {
        Vector2 pos;
        if (RectTransformUtility.ScreenPointToLocalPointInRectangle(joysticBG.rectTransform,ped.position.pressEventCamera, out pos))
        {
            pos.x = (pos.x / joysticBG.rectTransform.sizeDelta.x);
            pos.y = (pos.y / joysticBG.rectTransform.sizeDelta.y);

            inputVector = new Vector2(pos.x * 2 - 1, pos.y * 2 - 1);
            inputVector = (inputVector.magnitude > 1.0f) ? inputVector.normalized : inputVector;

            joystic.rectTransform.anchoredPosition = new Vector2(inputVector * (joysticBG.rectTransform.sizeDelta.x / 2), inputVector * (joysticBG.rectTransform.sizeDelta.y / 2));
        }   
    }
}


ОШИБКИ В КОНСОЛИ:
error CS1502: The best overloaded method match for `UnityEngine.Vector2.Vector2(float, float)' has some invalid arguments


error CS1061: Type `UnityEngine.Vector2' does not contain a definition for `pressEventCamera' and no extension method `pressEventCamera' of type `UnityEngine.Vector2' could be found. Are you missing an assembly reference?


error CS1501: No overload for method `ScreenPointToLocalPointInRectangle' takes `3' arguments
 Argument `#1' cannot convert `UnityEngine.Vector2' expression to type `float'
  • Вопрос задан
  • 307 просмотров
Решения вопроса 1
MrMureno
@MrMureno Куратор тега Unity
VR for all
ссылку на оригинал давайте) что у вас там такой за код..копипастнули..и не работает.

вы не до конца скопировал ошибки из консоли.

в случае с
ped.position.pressEventCamera,

https://docs.unity3d.com/ScriptReference/RectTrans...
смотрите какие параметры хочет метод..и что вы пробуете ему подсунуть.

должно быть что-то вроде
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(joysticBG.rectTransform,ped.position,ped.pressEventCamera, out pos))

чую склееили при копипасте параметры

ну и наконец оформление вопросов..код кодом..и прочие приятные мелочи - тоже надо заниматься.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы