我正在为iPhone和Android开发游戏,我有不同的GameObjects和GUITexture
,我已经为所有对象编写了触摸事件代码,一切都运行良好。但在更改后,我的主摄像头角度对象和GUITexture
'位于屏幕一角的对象和GUITexture's
触摸方法未调用。我发现如果我把那个物体放到屏幕的中间,那么它的触摸事件就能正常工作。
对于触摸,我使用了以下代码:
ray = Camera.main.ScreenPointToRay(Input.mousePosition); //I can't get touch.position to work
if(Input.GetMouseButtonUp(0)){
if(Physics.Raycast(ray,hit,1000)){
if(hit.collider.gameObject.name == "Sound"){
任何人都可以帮助我吗?
提前致谢。
答案 0 :(得分:0)
在谈论'我无法让它工作时,你必须更清楚。你得到了什么错误?你有什么尝试?此外,下次将您的编程语言发布为标记。
要获得触摸位置和光线与hittesting一起使用,请尝试以下操作:
if(Input.touches.Count > 0)
{
ray = Camera.main.ScreenPointToRay(Input.touches[0].position);
// do stuff ...
}
else
{
Debug.Log("No touches available");
}
Input.touches
返回一个对象列表,表示最后一帧中所有触摸的状态。每个条目表示手指触摸屏幕的状态。
至于你的hittest,你的Physics.Raycast
中有3个参数。
hit
。 我不确定您的hit
是否正确使用。可以肯定的是,为什么不在hittest之前实例化变量?
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
// do stuff ...
最后但并非最不重要的是,长度或你的光线。这有必要吗?在上面的示例中,我将变量全部保留。很有可能你移动你的相机,所以你的物体现在超过1000个单位。