2014-10-27 84 views
0

我正在製作2D瓦片遊戲。假設黃褐色的瓦片是英雄角色,而深藍色的瓦片是可移動的距離。檢測鼠標點擊可移動範圍瓦片

在Hero上,Sprite渲染器,Box Collider 2D和Rigidbody 2D被添加到遊戲對象;層是字符。大小爲1 x 1單位,座標爲(0,0)。

然後,我創建了圍繞英雄的4個可移動範圍的貼圖(從Prefab複製,尺寸爲1 x 1個單位,圖層爲前景)。爲了讓OnMouseDown()工作,我添加了Box Collider 2D到預製件。添加對撞機後,問題產生了。英雄不斷震動,因爲它不停地與4個可移動範圍的地磚發生碰撞。我怎樣才能阻止碰撞發生? 我假設他們不會碰撞,如果他們在不同層次,但實際上他們碰撞!

注意:我不能使用Raycast方法(因爲它會使代碼非常複雜)?

最後一點是,我的目標是製作桌面版本以及移動版本,什麼是全球檢測觸摸的方式&同時點擊?

Screenshot

+1

您是如何設置碰撞層矩陣的?你確定它是正確的嗎? – Jerdak 2014-10-27 14:20:32

回答

1

我認爲,如果他們是在不同的層

只有當你設置正確就不會發生碰撞。轉到編輯 - >項目設置 - >物理 - >圖層碰撞矩陣。如果選中某個框,則相應的圖層會發生碰撞。

我的目標是製作桌面版本以及移動版本,什麼是全球檢測觸摸方式&點擊同時?

鼠標和觸摸輸入在Unity分開,所以沒有全球性辦法,但單點觸摸可以模擬在移動平臺上的鼠標行爲(即onmousedown事件()將被觸發),而鼠標無法效仿觸摸(即Input.touches將爲空)。因此,如果它適合您,您可以在兩個平臺上使用鼠標輸入,否則(例如,多點觸控導致麻煩),您必須製作平臺相關控件(平臺定義參見http://docs.unity3d.com/Manual/PlatformDependentCompilation.html)。