Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d Unity 2D,获取操纵杆方向_Unity3d - Fatal编程技术网

Unity3d Unity 2D,获取操纵杆方向

Unity3d Unity 2D,获取操纵杆方向,unity3d,Unity3d,我正在制作一款手机游戏,玩家有一个抓钩,可以用它飞行(就像蜘蛛侠一样),我使用了一些脚本,所以抓钩是基于鼠标位置工作的,但问题是我想把它转换成手机游戏,我可以使用保持原样,因为点击触摸和鼠标点击是一样的,但我想用操纵杆来确定方向。我想让它和手机传奇游戏中的芬妮机制一样(如果你知道这个游戏的话) 我使用这个脚本来确定目标 在pc上(这很好) 我尝试将其用于移动设备(问题): 如果您想捕获操纵杆,可以通过输入管理器功能实现,该功能可以根据您的配置读取操纵杆、鼠标或键盘箭头/asdw 在代码中,您将使

我正在制作一款手机游戏,玩家有一个抓钩,可以用它飞行(就像蜘蛛侠一样),我使用了一些脚本,所以抓钩是基于鼠标位置工作的,但问题是我想把它转换成手机游戏,我可以使用保持原样,因为点击触摸和鼠标点击是一样的,但我想用操纵杆来确定方向。我想让它和手机传奇游戏中的芬妮机制一样(如果你知道这个游戏的话)

我使用这个脚本来确定目标 在pc上(这很好)

我尝试将其用于移动设备(问题):


如果您想捕获操纵杆,可以通过输入管理器功能实现,该功能可以根据您的配置读取操纵杆、鼠标或键盘箭头/asdw

在代码中,您将使用:

float inputX=Input.GetAxis(“水平”);
float inputY=Input.GetAxis(“垂直”);
如果不想让鼠标查看,只需在
Edit>projectsettings>Input>Axes
中配置鼠标即可。有两种“水平”和两种“垂直”配置。仅允许存在操纵杆配置,并删除另一个。下面是为操纵手柄配置的轴的图像:

有关更多信息,请查看。我希望这能帮助你开始

编辑:手机上的虚拟/屏幕操纵杆

如果您谈论的是虚拟/屏幕操纵杆,则必须以艰难的方式手动控制它。要开发这种操纵杆,您将使用输入管理器在按下(
Input.GetMouseButtonDown(int)
),释放(
Input.GetMouseButtonUp(int)
)和拖动(
Input.GetMouseButton(int)
)期间获取鼠标/触摸位置。然后,您可以控制自用户开始按下鼠标后鼠标的移动量,并夹紧鼠标位置,以避免鼠标溢出操纵杆区域


正如您在评论中所述,您已经从资产存储下载了一项资产。这些资产的工作方式是独特的,由它们的开发人员告诉您应该如何使用它们。寻找开发人员提供的文档、教程和示例,以了解如何使用资产。

不要使用
Input.GetKeyDown(KeyCode.Mouse0)
,尝试使用
Input.GetMouseButtonDown(0)
。好的,我使用从资产存储下载的预制操纵杆,我不知道如何使用axis,我试着引用那个操纵杆并使用maggle.GetAxis,但它不起作用。那么我怎么才能得到操纵杆轴呢?哦,你说的是虚拟/屏幕操纵杆。在这个问题上,它并不聪明,因为手机上有真正的操纵杆/游戏板。在这种情况下,输入管理器将毫无帮助。我将更新我的答案,但我担心“如何使用此资产”在堆栈溢出中有点离题,如果您在遵循资产文档方面没有特定问题。对不起,我忘了提及,是的,这是一个虚拟的juystick
 if (Input.GetKeyDown(KeyCode.Mouse0))
        {
            Vector2 worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            rope.setTarget(worldPos); // hook script will get this value
        }
if (Input.GetKeyDown(KeyCode.Mouse0))
        {
            float inputX = joystick.Horizontal;
            float inputY = joystick.Vertical;
            Vector2 dir = new Vector2(inputX, inputY);
            rope.setTarget(dir); // hook script will get this value
        }