有没有办法获得实际的操纵杆。垂直和操纵杆。水平值?

时间:2020-08-27 09:26:09

标签: c# unity3d joystick

我正在尝试自己制作Moba游戏。

我想做的是

  1. 传递一个名为joystick_tag的参数。 (例如:Get3DJoystickPosition(joystick_tag))
  2. 获取当前的操纵杆。Horizo​​ntal,joystick.Vertical,Camera.main,以便我可以计算值:
Camera.main.ScreenToWorldPoint(new Vector3((joystick.Horizontal + 1) * Screen.width / 2, (joystick.Vertical + 1) * Screen.height / 2, Camera.main.nearClipPlane));
  1. 返回该值。

这似乎很简单,但是在我的代码中,操纵杆。水平操纵杆和垂直操纵杆。即使我移动操纵杆,垂直值也保持为0。

基本上,该方法获得一个字符串输入,称为joystick_tag。 然后通过标签,每次调用该方法时,它都会找到一个通过标签进行标签的操纵杆。然后,它调用Update()方法,以便获得当前的Joystick.Horizo​​ntal和Joystick.Vertical。

这是完整的代码。游戏杆类来自Fenerax Studios的游戏杆包:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace Korselo.JoyPos
{
    public class JoyPos : MonoBehaviour
    {
        public Joystick joystick;
        public Vector3 world_v;
        public string joystick_tag_public;
        // Start is called before the first frame update
        void Start()
        {
          
        }

        // Update is called once per frame
        void Update()
        {
            world_v = Camera.main.ScreenToWorldPoint(new Vector3((joystick.Horizontal + 1) * Screen.width / 2, (joystick.Vertical + 1) * Screen.height / 2, Camera.main.nearClipPlane));

            Debug.Log(world_v);
        }

        public Vector3 Get3DJoystickPosition(string joystick_tag)
        {
            GameObject joystickGameObject = GameObject.FindGameObjectWithTag(joystick_tag);
            if (joystickGameObject != null)
            {
                joystick = joystickGameObject.GetComponent<Joystick>();
            }
            Update();
            return world_v;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

对不起,但是您的代码看起来一团糟。我强烈建议您在制作MOBA之前先学习课程或使用Unity Learn开始学习。而且您不应该自己打Exception:java.lang.IllegalArgumentException: The end instant must be greater the start 。 Unity自己称呼它。要回答您的问题,Update()joystick.Horizontal应该向您返回实际值。