-1
votes

Comment définir GameObject inactif puis actif après quelques secondes d'unité?

Je veux faire un objet de jeu pour être inactif lorsque le joueur collant avec un objet de jeu (celui que j'ai fait). Maintenant, je veux attendre quelques secondes, puis l'activer à nouveau. Comment puis-je faire cela?

Voici mon code P>

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

public class PlayerMovement: MonoBehaviour
{

private float chubbyScore = 0;
private float coin = 0;
public float speed = 1;
public float jump = 1;

void Update()
{
    Vector3 playerMovement = Vector3.zero;
    playerMovement.x = Input.GetAxis("Horizontal");
    transform.position += playerMovement * speed * Time.deltaTime;
    transform.Translate(Vector3.forward * Time.deltaTime * speed);

    if (Input.GetKeyDown(KeyCode.Space))
    {
        GetComponent<Rigidbody>().velocity = Vector3.up * jump;
    }
}

void OnTriggerEnter(Collider other)
{
    if (other.gameObject.CompareTag("Pick Up"))
    {
        other.gameObject.SetActive(false);
        coin += 1;
        chubbyScore += 50;
    } 

}
}


1 commentaires

J'ai essayé ceci mais n'a pas fonctionné .. ienumerator ActivateBlock () {Rendement retour Nouvelle servieforse (0.5F); Si (GameObject.comParetag ("Pick Up")) {GameObject.Seactive (True); }}}


3 Réponses :


1
votes

Je créerais un flotteur public pour la durée de décalage, vous pouvez créer un flotteur privé pour la minuterie.

Le code pour définir votre état actif d'objets peut ressembler à ceci: P>

private float chubbyScore = 0;
private float coin = 0;
public float speed = 1;
public float jump = 1;
public float offsetTime = 2f;
private float timer = 0f;
private GameObject collObj;

void Update()
{
    Vector3 playerMovement = Vector3.zero;
    playerMovement.x = Input.GetAxis("Horizontal");
    transform.position += playerMovement * speed * Time.deltaTime;
    transform.Translate(Vector3.forward * Time.deltaTime * speed);

    if (Input.GetKeyDown(KeyCode.Space))
    {
        GetComponent<Rigidbody>().velocity = Vector3.up * jump;
    }

    if(!collObj.active)
    {
        timer += Time.deltaTime;
        if(timer > offsetTime)
        {
            timer = 0f;
            collObj.SetActive(true);
        }
    }
}

void OnTriggerEnter(Collider other)
{
    if (other.gameObject.CompareTag("Pick Up"))
    {
        collObj = other.gameObject;
        collObj.SetActive(false);
        coin += 1;
        chubbyScore += 50;
    }

}


0 commentaires

1
votes

Créer une simple attente utilitaire universelle comme: xxx

Cela s'affiche automatiquement dans le jeu en cas de besoin, il vous suffit de créer le script, maintenant dans votre Ontriggerenter xxx


0 commentaires

0
votes

Faites une nouvelle fonction dans laquelle vous activez / désactivez l'objet de jeu. Ensuite, dans la méthode de démarrage, invoquez à plusieurs reprises la fonction récemment faite.

//Enables or Disables the GameObject every 5 seconds
void Start()
{
     InvokeRepeating("Repeat", 0, 5);
}

void Repeat()
{
     //Enable or Disable the GameObject
}


0 commentaires