#c# #unity3d
#c# #unity3d
Вопрос:
это мой первый вопрос здесь, и я полный новичок. Я создал предмет, который может быть подобран игроком при столкновении, и он просто сбрасывает анимацию игрока (не моя точка зрения здесь), и я просто хотел, чтобы спрайт пикапа изменился, прежде чем он уничтожит себя.
Я искал вокруг, но ничего не мог найти для этого.
Вот мой текущий код на пикапе:
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);
}
}
}
Но это вообще не сработало.
Я ищу эффект, похожий на то, когда, например, появляются блестки после того, как вы берете монету.
Есть ли какой-либо готовый ресурс, на который я могу ссылаться, возможно? Или код простой, и я просто так плохо кодирую lol?
Спасибо ^^
Комментарии:
1. Есть много способов сделать это, вы могли бы использовать
Destroy(gameObject,0.5f)
для уничтоженияgameObject
через 0,5 секунды. Или вы могли бы использовать сопрограмму, которая ждет некоторое время, а затем уничтожаетgameObject
и делает все, что вы хотите, чтобы она делала. Вы также можете использовать анимационные события, что вам больше подходит2. Это хорошо работает! Я не знал о функции времени в destroy.GameObject! Спасибо. Я хочу отметить вас как ответ, но я не знаю как. Спасибо!
Ответ №1:
Я разобрался с этим с помощью пользователя Ali Baba.
В принципе, я беру 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);
}
}
}