Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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

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
C# 功能未从摄像机获取位置_C#_Unity3d - Fatal编程技术网

C# 功能未从摄像机获取位置

C# 功能未从摄像机获取位置,c#,unity3d,C#,Unity3d,当您按下鼠标时,程序不会从屏幕上获取该位置,除非您在播放器上单击 这个程序应该从mousedown和mouseup的位置获取向量,并对播放器施加恒定的力,但是mousedown只有在您按下播放器时才会激活(如果您在其他任何地方释放鼠标,它就会起作用)。如果有帮助的话,主摄像机将作为玩家游戏对象的父对象 void OnMouseDown() { mouseDown = Camera.main.ScreenToViewportPoint(Input.mousePosition); }

当您按下鼠标时,程序不会从屏幕上获取该位置,除非您在播放器上单击

这个程序应该从mousedown和mouseup的位置获取向量,并对播放器施加恒定的力,但是mousedown只有在您按下播放器时才会激活(如果您在其他任何地方释放鼠标,它就会起作用)。如果有帮助的话,主摄像机将作为玩家游戏对象的父对象

void OnMouseDown()
{

    mouseDown = Camera.main.ScreenToViewportPoint(Input.mousePosition);
}


void OnMouseUp()
{
    if (!thrown)    //verifica che non sia stato lanciato
    {
        mouseUp = Camera.main.ScreenToViewportPoint(Input.mousePosition);
        var force = fixedLaunch(mouseDown - mouseUp);
        GetComponent<Rigidbody2D>().velocity = new Vector2(0, 0);
        GetComponent<ConstantForce2D>().force = force * speed;
        thrown = true;
        StartCoroutine(waiter(delay));
    }
}
void OnMouseDown()
{
mouseDown=Camera.main.ScreenToViewportPoint(Input.mousePosition);
}
void OnMouseUp()
{
如果(!抛出)//verifica che non sia stato lanciato
{
mouseUp=Camera.main.ScreenToViewportPoint(Input.mousePosition);
var-force=固定发射(mouseDown-mouseUp);
GetComponent().velocity=新向量2(0,0);
GetComponent().力=力*速度;
抛出=真;
开始例行程序(服务员(延迟));
}
}

它应该从按下鼠标按钮和从屏幕上的任何位置释放矢量来创建矢量,而不是只在按下播放器时工作,这正是所需的行为。根据Unity脚本文档:

当用户在GUI元素或碰撞器上按下鼠标按钮时,调用OnMouseDown

当用户释放鼠标按钮时,调用OnMouseUp

如果你想让它捕捉屏幕上任何地方的鼠标点击,你可能想把你的脚本附加到画布上,而不是你的玩家游戏对象上

编辑以回答以下评论:

将其附加到画布,然后添加:

public GameObject playerObject;
在“检查员”中,将其引用到您的玩家。 然后在脚本中对其应用力,或者在附加到播放机的脚本上调用函数(如果愿意)

否则,您可以在
Update()中使用


这正是我们想要的行为。根据Unity脚本文档:

当用户在GUI元素或碰撞器上按下鼠标按钮时,调用OnMouseDown

当用户释放鼠标按钮时,调用OnMouseUp

如果你想让它捕捉屏幕上任何地方的鼠标点击,你可能想把你的脚本附加到画布上,而不是你的玩家游戏对象上

编辑以回答以下评论:

将其附加到画布,然后添加:

public GameObject playerObject;
在“检查员”中,将其引用到您的玩家。 然后在脚本中对其应用力,或者在附加到播放机的脚本上调用函数(如果愿意)

否则,您可以在
Update()中使用


我已经解决了这个问题(大约一周前),而不是使用OnMouseDown()和OnMouseUp(),我在Update()中编写了代码,它工作得非常好

我已经解决了这个问题(大约一周前),而不是使用OnMouseDown()和OnMouseUp(),我在Update()中编写了代码而且它工作得非常完美

除了玩家,我不能将脚本附加到其他任何东西上,因为它必须对脚本施加力。我试着在相机上扣动扳机,但如果不是在播放器上,它仍然不起作用。我更新了回答以回复你的评论。我不能将脚本附加到任何其他内容上,除了播放器,因为它必须对它施加力。我试着在摄像机上扣动扳机,但如果不在播放机上,它仍然不起作用。请更新答案以回复您的评论。