我正在尝试自己制作Moba游戏。
我想做的是
Camera.main.ScreenToWorldPoint(new Vector3((joystick.Horizontal + 1) * Screen.width / 2, (joystick.Vertical + 1) * Screen.height / 2, Camera.main.nearClipPlane));
这似乎很简单,但是在我的代码中,操纵杆。水平操纵杆和垂直操纵杆。即使我移动操纵杆,垂直值也保持为0。
基本上,该方法获得一个字符串输入,称为joystick_tag。 然后通过标签,每次调用该方法时,它都会找到一个通过标签进行标签的操纵杆。然后,它调用Update()方法,以便获得当前的Joystick.Horizontal和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;
}
}
}
答案 0 :(得分:0)
对不起,但是您的代码看起来一团糟。我强烈建议您在制作MOBA之前先学习课程或使用Unity Learn开始学习。而且您不应该自己打Exception:java.lang.IllegalArgumentException: The end instant must be greater the start
。 Unity自己称呼它。要回答您的问题,Update()
和joystick.Horizontal
应该向您返回实际值。