2016-09-16 92 views
0

我使用Kudan插件Unity构建Android应用程序。我正在使用无标记模式。当我点击(触摸)模型,在这种无标记模式下产生时,我想要摧毁它。我正在使用下面列出的Raycast脚本。我试图将该脚本附加到Kudan相机。此外,我创建了一个公共Camera Camera对象,并通过了Kudan Camera。然而这两种选择都不起作用Kudan Unity:摧毁游戏对象

有谁知道我在做什么错?

public Gamobject model; 

if (Input.touchCount > 0) 
     RaycastHit hit; 

      Ray ray = Camera.main.ScreenPointToRay (Input.GetTouch (0).position); 

     if (Physics.Raycast (ray, out hit)) 
     { 
      if (hit.collider.gameObject.tag == "chair") 
      { 
       Destroy (model); 
      } 
     } 
    } 

在此先感谢!

+0

也许尝试将射线距离设置为某个高值以消除射线在击中某物之前结束的情况。 –

+0

一个建议可能是用调试器遍历代码,这样你就可以看到流程,或者在你的if语句上面添加一个print(“raycast命中对象:”+ hit.gameObject.name);以确定你的raycast正常工作。从那里开始缩小问题。椅子上是否有对撞机? – ejsd1989

回答

1

假设你的实际代码的正确性和游戏对象,而不是Gamobject说,你的if语句有开括号等,这可能是因为:

  • 你还没有给你的模型中的“椅子”标签。如果您的光线撞击了模型,但模型没有正确的标记,则它将被忽略。
  • Ray的射程并不够远(如评论中所提到的)。你没有指定距离,理论上这应该意味着没有最大距离,但你永远不知道,Unity可能有一些奇怪的默认值或某些东西。
  • 您的模型没有碰撞器。对象需要碰撞器,否则物理引擎不能注册射线和对象之间的“碰撞”。

但实际上,一个更容易,也许更好的方法是根本不使用Raycast。如果你犯了一个方法,在脚本:

void OnMouseDown 
{ 
    Destroy(gameObject); 
} 

并附加脚本到你的模型,然后在模型上的用户点击(或水龙头上移动),只要有一个对撞机,它就会被破坏。

+0

感谢您的回复。如所建议的那样,将射线距离设置为高值(使用Mathf.Infinity)解决了该问题。 – Aniruddha

+0

@Aniruddha可以请你把这个答案标记为解决了你的问题。 – MultiColourPixel