2016-07-25 92 views
0

我在Unity 3D 5.3.5中執行工作法術時遇到問題。我有一個空的遊戲對象,它是該能力的父親,它只包含一個叫做Spell的腳本,還有一個是粒子系統的孩子。出於測試目的,我把它放在資源文件夾,這樣我就可以很容易地對其進行實例化這樣Unity 3D法術鑄造

GameObject castedSpell = (GameObject)Instantiate(Resources.Load("Fireball"), transform.position, transform.rotation); 
  • transform是指當前Player對象的transform

然而,它在地面產卵從而可以通過從變換中移動y軸來固定,但這聽起來不是一個好主意,有時粒子會與玩家發生碰撞,我想在屏幕中間將該魔咒實例化爲十字準線:http://prntscr.com/bx91op

十字準線的工作原理完全一樣,在網上特拉 - 參考:https://www.youtube.com/watch?v=Jcg4o8IVwlw

我確實有這個十字的副本,但我仍然不知道如何實例化一個咒語朝它。當法術碰撞時,我也需要做一些傷害等等。我看到粒子系統具有碰撞屬性並且還有一個事件觸發器private void OnParticleCollision(GameObject other),但是當我將它附加到主要粒子對象http://prntscr.com/bx9356時,似乎並不奏效。我的播放器對象具有PlayArea的圖層標記,當我將碰撞屬性設置爲不與此特定標記衝突時,沒有任何變化,它仍會在播放器內部爆炸。

所以我的問題的簡短摘要:

  1. 如何正確實例化一個咒語?
  2. 如何旋轉並將其發送到屏幕上的十字準線?
  3. 如何防止與特定物體發生碰撞?
  4. 如何檢查何時發生碰撞?
+3

如果您使用播放器作爲起始位置,則咒語可能從底部開始是合乎邏輯的。這取決於玩家對象的來源。通常你使用一個空的gameobject作爲起始位置,並且位置正確(例如在槍的前端)。在你的情況下,這可能在玩家手中。爲了防止與某些物體碰撞,你可以使用各種東西,例如圖層或標籤。碰撞可以通過像OnCollisionEnter這樣的函數來檢測。 –

+0

對於這個方向,我會提出類似'transform.position.forward'的地方,其中變換是指玩家。輪換應該是球員相應的輪換。 –

+0

http://wiki.unity3d.com/index.php/ShootingWeaponScript –

回答

0

由於你的大部分問題已經在評論中得到解答,所以我只會提到nr。 2:

要使GameObject目標成爲特定點,您可以使用transform.LookAt()函數。

爲了確定所述目標點,最好的選擇是從攝像頭/十字準線做出一個raycast進入你的場景。射線的第一個點然後可以用作你的法術的目標點。 (只需小心你的相機和角色之間的牆壁或物體......)