【发布时间】:2018-01-28 21:09:44
【问题描述】:
我试图确定鼠标点击是否在矩形变换内。
用户每次点击屏幕,都会抛出一个球。但是如果用户点击暂停按钮,则不应抛出任何球。
我试图用这段代码来解决,但似乎只能识别矩形变换的右上角。这是一个展示实际问题的短视频:https://youtu.be/gdyDBK6ubgo
这里是sn-p的代码:
void Update() {
//Check if user touch on display / click mouse button
Vector2 mousePos = new Vector3(Screen.width - Input.mousePosition.x,Screen.height - Input.mousePosition.y, 0);
if (Input.GetMouseButtonDown(0) && props.throwable && !checkCollisionWithPauseButton(mousePos) && props.remainingBalls > 0)
{
fireBall(Input.mousePosition);
}
}
bool checkCollisionWithPauseButton(Vector3 mousePos){
//TODO: This does not work very well
return pauseButton.GetComponent<RectTransform>().rect.Contains (mousePos);
}
这是一个screenshot,它显示了矩形变换。
【问题讨论】:
-
你为什么不直接使用它应该工作的事件系统呢? docs.unity3d.com/ScriptReference/…
-
非常感谢 - 我不知道这种方法!但是知道为什么这不会像预期的那样工作吗?
-
不用多想,我认为它与
Input.mousePosition已经在屏幕空间中有关。尝试将您与Debug.Log(string)比较的所有计算和值输出到控制台并查看您得到的结果。您可能能够自己得出结论。 -
请不要发布指向图像托管网页的链接,这些网页会强制停用添加阻止程序...而是将图像直接上传到您的问题。
标签: c# user-interface unity3d