Как заставить коллекционер изменить свою анимацию при столкновении с игроком? - PullRequest
0 голосов
/ 16 апреля 2019

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

Я искал вокруг, но ничего не смог найти для этого.

Вот мой текущий код на пикапе:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;

 public class PickUpReCharge : MonoBehaviour {
   public Animator anim;
   public Animator animc;

   void Start() {
   }

   void Update() {
 }

 private void OnTriggerEnter2D(Collider2D other) {
   if (other.tag == "Player") {
     anim.Rebind();
     animc.Rebind();
     Destroy(gameObject);
    }
  } 
}

Все работает нормально, но когда я попытался использовать что-то вроде перехода в другое состояние анимации, где происходит анимация срабатывания, объект разрушается сам перед воспроизведением анимации и просто не выглядит правильно.

Вот что я пытался сделать первым:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PickUpReCharge : MonoBehaviour {

  public Animator anim;
  public Animator animc;
  public Animator animp;

  void Start() {

  }

  void Update() {

  }

private void OnTriggerEnter2D(Collider2D other) {

   if (other.tag == "Player") {
     anim.Rebind();
     animc.Rebind();
     animp.Play("Pickup", 0, 0.0f);
     Destroy(gameObject);
    }
  } 
}

Но это не сработало вообще.

Я ищу такой эффект, как, например, появление искры после того, как вы подняли монету.

Есть ли какой-нибудь готовый актив, на который я могу сослаться? Или код легкий, а я так плохо разбираюсь в коде?

Спасибо ^^

1 Ответ

0 голосов
/ 16 апреля 2019

Я разобрался с помощью пользователя Али Бабы.

В основном, я беру Destroy(gameObject); и добавляю время к нему.Destroy(gameObject, 0.3f);

Это добавляет задержку к уничтожению объекта.

Это заставило его работать на меня.Поэтому я поместил там свой анимационный скрипт, и у него было достаточно времени, чтобы поиграть!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PickUpReCharge : MonoBehaviour
{
    public Animator anim;
    public Animator animc;
    public Animator anime;

    void Start()
    {
        anime.Play("Pickup", 0, 0f);
    }

    void Update()
    {

    }

    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "Player")
        {
            anim.Rebind();
            animc.Rebind();
            anime.Rebind();
            Destroy(gameObject, 0.3f);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...