2015-11-24 2 views
1

У меня есть вопрос о том, чтобы частица для прыжков, как облако пыли, когда игрок прыгает, вот мой игрок сценарий:Перейти эффект частиц

public class PlayerMovement : MonoBehaviour { 
    public float speed = 5f; 
    public Transform groundCheck; 
    public LayerMask groundLayer; 
    bool grounded = false; 
    Animator anim; 
    Rigidbody2D rgbd; 

    void Start() { 
     anim = GetComponent<Animator>(); 
     rgbd = GetComponent<Rigidbody2D>(); 
    } 

    void Update() { 
    } 

    void FixedUpdate(){ 
     grounded = Physics2D.OverlapCircle (groundCheck.position, 0.2f, groundLayer); 
     float movex = Input.GetAxis ("Horizontal"); 
     rigidbody2D.velocity = new Vector2 (movex * speed, rigidbody2D.velocity.y); 

     if (movex > 0){ 
      transform.localScale = new Vector2(1,transform.localScale.y); 
     } else if (movex < 0){ 
      transform.localScale = new Vector2(-1,transform.localScale.y); 
     } 

     if (Input.GetKey (KeyCode.UpArrow)){ 
      if (grounded == true){ 
       rgbd.AddForce (new Vector2(0f, 4f),ForceMode2D.Impulse); 
      } else { 
       grounded = false; 
      } 
     } 

     anim.SetFloat ("speed", Mathf.Abs (movex)); 
     anim.SetBool ("grounded", grounded); 

     } 
} 

Я хочу его, чтобы активировать систему частиц только один раз в то время в воздухе. Я пробовал несколько вещей, но когда игрок находится в воздухе, система частиц никогда не останавливалась.

+0

Я хочу, чтобы он играл частицу и просто играл один раз, я тоже не умею создавать экземпляр): –

+1

Вам нужно создать экземпляр частицы, когда захотите. Эти частицы должны уничтожаться, когда их продолжительность закончена. Проверьте методы экземпляра и onDestrot от Unity3d. –

ответ

2

Что большинство людей делают, это создать новую копию системы частиц при каждой необходимости и уничтожить ее позже.

Так что вам понадобится новая система частиц. Развернуть Эмиссия вкладка. В этом случае установите Rate в 0 (0 частиц в секунду). Ниже Оценить должен быть пустой список под названием Bursts. Добавьте один взрыв. Set Время до 0.0 (должно быть установлено по умолчанию) и количество частиц на все, что вам нужно. Это будет снимать 1 всплеск частиц всякий раз, когда система частиц работает. Обратите внимание, что если Looping включен, то пакет будет происходить в начале каждого цикла.

Пока все хорошо. Теперь сделайте из него сборку (посмотрите, пожалуйста, учебник, если вам нужно). Затем в коде объявить Game Object переменные, которая будет служить вам в качестве системы частиц:

public GameObject jumpParticles; 

обратно к Единству, кормить ваши сборным в Скачке Частицы слота в инспекторе. Теперь все готово для копирования и вставки туда, где вам это нужно. Поэтому создайте метод для этого:

void SpawnJumpParticles(Vector3 pos){ 
    GameObject tmpParticles = (GameObject)Instantiate(jumpParticles, pos, Quaternion.identity); //look up how to use Instantiate, you'll need it a lot 
    Destroy(tmpParticles, 3f); 
} 

Этот код порождает частицы и автоматически уничтожает их за 3 секунды. Аргумент pos в функции - это то, где частицы будут созданы. Осталось только назвать это из вашего кода, где вы начинаете прыжок. Я оставлю это вам :)) Удачи.

Смежные вопросы