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;
}
}
}
3 Réponses :
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;
}
}
Créer une simple attente utilitaire universelle comme: Cela s'affiche automatiquement dans le jeu en cas de besoin, il vous suffit de créer le script, maintenant dans votre Ontriggerenter code> p>
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
}
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); }}} code>