2015-03-24 1 views
0

J'écris un petit jeu où les objets arrivent aléatoirement, j'ai besoin d'implémenter une logique où je peux calculer intervalle d'attente pour l'instanciation suivante selon la minuterie (au fur et à mesure que le jeu progresse, le temps d'attente devrait diminuer).Besoin de diminuer l'intervalle de temps d'attente de spawn (float) basé sur la valeur time.time, L'instanciation de deux objets devrait diminuer d'une certaine manière

je suis en train de pondre des objets dans le jeu les objets sont d'avoir la vie jusqu'à la prochaine apparaître, le besoin de joueur aux doigts de l'onglet tels qu'ils apparaissent et je suis en train de instancier ces doigts plus vite que la progression du jeu

luttent seulement pour obtenir équation mathématique pour obtenir de la valeur pour spawnWait basé Time.time. J'espère que je l'ai écrit correctement maintenant.

enter image description here

i besoin équation graphique quelque chose comme dans la première Quater (+ x, + y) pour time.time & spawn attente. Bien que pas très sûr.

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 

public class GameController : MonoBehaviour { 
    // Use this for initialization 
    public GameObject GoodThumb; 
    public GameObject BadThumb; 
    public int max = 22; 
    public float spanWait = 10.0f; 
    public static bool gameOver = false; 
    Vector3 theNewPos = Camera.main.ViewportToWorldPoint(new  Vector3(0,0,11)); 
    Quaternion theNewRotation= Quaternion.Euler(0,0,0); 

    void Start() { 
     StartCoroutine(spawn()); 
     OnGameStart(); 
    } 

    void Update() {  
     Time.deltaTime 
    } 
    // Update is called once per frame 
    void Update() { 
    // SpawnRandom(); 
     ChooseFinger(); 
    } 

    public int ChooseFinger() 
    { 
     return Random.Range (1, 5); 
    } 

    void OnGameStart() 
    { 
     //Debug.Log ("Game Started"); 
    } 

    IEnumerator spawn() { 
     GameObject go; 
     while(true) 
     { 
      int randomLoop = Random.Range(2,5); 
      for (int i = 0; i < randomLoop; i++) 
      { 
       pickRandomFinger(); 
       go = Instantiate(GoodThumb); 
       go.transform.position = theNewPos; 
       go.transform.rotation = theNewRotation; 
      // Debug.Log(theNewPos); 
      // Debug.Log(theNewRotation); 
       yield return new WaitForSeconds(spanWait); 
      } 
      pickRandomFinger(); 
      go = Instantiate(BadThumb); 
      go.transform.position = theNewPos; 
      go.transform.rotation = theNewRotation; 
      yield return new WaitForSeconds(spanWait); 
      if (gameOver) 
      { 
       break; 
      } 
     } 
    } 

    public void pickRandomFinger() 
    { 
     int FingerNo = ChooseFinger(); 
     Debug.Log (FingerNo); 
     switch (FingerNo) 
     { 
     case 1: // finger1 type bottom good 
      theNewPos = Camera.main.ViewportToWorldPoint(new Vector3(Random.Range(0.0F,1.0F),1.0F, 11)); 
      theNewRotation = Quaternion.Euler(0,0,180); 
      break;    
     case 2: // finger4 type right good 
      theNewPos = Camera.main.ViewportToWorldPoint(new Vector3(1.0F,Random.Range(0.0F,1.0F), 11)); 
      theNewRotation = Quaternion.Euler(0,0,90);    
      break; 
     case 3: // finger2 type top good 
      theNewPos = Camera.main.ViewportToWorldPoint(new Vector3(Random.Range(0.0F,1.0F),0.0F, 11)); 
      theNewRotation = Quaternion.Euler(0,0,0);    
      break;    
     case 4: // finger3 type left good 
      theNewPos = Camera.main.ViewportToWorldPoint(new Vector3(0.0F,Random.Range(0.0F,1.0F),11)); 
      theNewRotation = Quaternion.Euler(0,0,270);    
      break; 
     } 
    } 
} 
+3

Quelle est votre question? – fxm

+0

Veuillez ne pas ajouter d'étiquettes au titre. C'est un titre, pas une requête Google. –

+0

Diminuez simplement spanWait par mise à jour. Et peut-être re-factoriser à spawnWait? – Catwood

Répondre

0

Cette question est très vague, De ce que je comprends, vous voulez qu'il y ait une sorte de corrélation inverse entre la quantité de temps que l'utilisateur a été dans le jeu et le temps entre fraie. Il y a un million de façons de le faire, et la bonne réponse dépend entièrement du type de comportement que vous voulez que le jeu présente.

timeBetweenSpawns = minTime + max(defaultTime - (timeInGame*constant),0) 

Ce code (très simple et généralisé) vous donnera une relation inverse très simple entre le temps passé dans le jeu et le temps entre les éléments de frai. Vous allez devoir penser à votre propre solution et trouver ce qui fonctionne le mieux pour votre projet.