estou tentando abrir a porta quando atiro no alvo em 2D, mas como o título diz, não funciona. No specialPipe prefab eu tenho filhos que são canos e tem animação para puxar aquele cano que funciona como uma porta. Apenas o primeiro objeto funciona, mas seus clones abrem a porta imediatamente (a animação é ativada imediatamente quando é acionada). desculpe pelo mau inglês.
Script de destino que possui animação:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TargetScript : MonoBehaviour
{
public Animator anim;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
anim = GameObject.FindGameObjectWithTag("BottomPipe").GetComponent<Animator>();
anim.enabled = false;
}
private void OnTriggerEnter2D(Collider2D collision)
{
anim.enabled = true;
Destroy(gameObject);
}
}
script gerador:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PipeSpawnScript : MonoBehaviour
{
public GameObject pipe;
public GameObject specialPipe;
public float spawnRate = 2;
private float timer = 0;
public float heightOffset = 10;
// Start is called before the first frame update
void Start()
{
spawnPipe();
}
// Update is called once per frame
void Update()
{
if(timer < spawnRate)
{
timer += Time.deltaTime;
}else
{
spawnPipe();
timer = 0;
}
}
void spawnPipe()
{
float lowestPoint = transform.position.y - heightOffset;
float highestPoint = transform.position.y + heightOffset;
float randomNumber = Random.Range(0, 10);
if(randomNumber < 2)
Instantiate(pipe, new Vector3(transform.position.x, Random.Range(lowestPoint, highestPoint), 0), transform.rotation);
else
{
GameObject test = Instantiate(specialPipe, new Vector3(transform.position.x + 10, Random.Range(lowestPoint, highestPoint), 0), transform.rotation);
Animator anim = test.GetComponentInChildren<Animator>();
anim.Rebind();
}
}
}
Pesquisei no Google e descobri que Animator.rebind() deveria consertar isso, mas não funciona para mim. Espero encontrar resposta e ty com antecedência.