2015-05-16 6 views
0

У меня есть персонаж, который столкнется с монетой. Когда персонаж сталкивается с монетой, должна произойти частичная анимация. Вот мой код. Некоторая базовая помощь поможет много. Этот код прикрепляется к персонажам игрока.Emit Particle onCollision in Unity 3D

void OnTriggerEnter(Collider _hit) 
{ 
    if (_hit.tag == "Coin") 
    { 
     Destroy(_hit.gameObject); 
     coinCount++; 
     coinsText.text = "Coins: " + coinCount.ToString() + "/" + coinTotal.ToString(); 
     var Bling : GameObject = Instantiate(Bling, transform.position, Quaternion.identity); 
    } 
} 
+0

Это не может быть «ваниль C#», поскольку я не уверен, что тег C# подходит. В частности, этот 'var Bling: GameObject = ...' не является легальным синтаксисом C#. –

+0

Bling - это в основном GameObject, который автоматически воспроизводит (и автоматически удаляет) частицу «анимация». Я в основном пытаюсь создать это в том же месте, что и персонаж игрока. – AppKing

+0

Я уверен, что он копирует пример Java, не понимая, что он смотрит на пример Java? Unity принимает как Java, так и C#, и, таким образом, есть несколько примеров с обоих языков, плавающих по интернету. «var Bling: GameObject» - это синтаксис Javascript. Например: http://answers.unity3d.com/questions/237217/pragma-strict-and-getcomponent.html – ThisHandleNotInUse

ответ

1

Это то, что вам нужно сделать.

public ParticleSystem collisionParticlePrefab; //Assign the Particle from the Editor (You can do this from code too) 
private ParticleSystem tempCollisionParticle; 

void OnTriggerEnter (Collider _hit) 
{ 
    if (_hit.tag == "Coin") { 
     Destroy (_hit.gameObject); 
     coinCount++; 
     coinsText.text = "Coins: " + coinCount.ToString() + "/" + coinTotal.ToString(); 
     tempCollisionParticle = Instantiate (collisionParticlePrefab, transform.position, Quaternion.identity) as ParticleSystem; 
     tempCollisionParticle.Play(); 
    } 
} 
+0

Спасибо, человек выглядит намного лучше :) – AppKing

+0

У меня проблема! Когда игра переходит на следующий уровень (например, уровень 1 до уровня 2), он не воспроизводит анимацию частиц и не дает ошибку, как «ArgumentException: вещь, которую вы хотите создать, равна нулю». Есть идеи, как это решить? – AppKing

+0

Ваш сборник имеет значение null в вашей секунде. Добавьте исходный образец частиц в ваш collisionParticlePrefab. Вы также можете сделать это из кода до if (_hit.tag == "Coin") {с collisionParticlePrefab = GameObject.Find ("nameOfGameObjectPArticleIsAttachedTo"). GetComponent (); – Programmer