2014-04-03 37 views
1

我創建了一個太空侵略者遊戲,玩家必須射擊一個顯示隨機數的小行星。總和也將在場景開始時隨機生成。一旦玩家射擊一個小行星,場景重新加載,獲得正確答案的積分。生成幾個隨機數,其中之一必須是正確的答案?

我遇到的問題是我需要至少一個小行星來顯示正確的答案。我目前通過重新加載場景來實現這一點,直到小行星號碼與總和的答案相匹配。這可能需要重新加載,看起來非常糟糕。有沒有更好的方法來實現這將看起來更好,更高效。下面列出了我的努力。我很欣賞任何評論。謝謝!

用於檢查正確答案和重新加載場景的腳本。

#pragma strict 

function Start() 
{ 

} 

{ 

    if (
     Asteroid1_Script.asteroid1Value != (Sum_Script.sumA - Sum_Script.sumB) && 
     Asteroid2_Script.asteroid2Value != (Sum_Script.sumA - Sum_Script.sumB) && 
     Asteroid3_Script.asteroid3Value != (Sum_Script.sumA - Sum_Script.sumB) &&  
     Asteroid4_Script.asteroid4Value != (Sum_Script.sumA - Sum_Script.sumB) && 
     Asteroid5_Script.asteroid5Value != (Sum_Script.sumA - Sum_Script.sumB) 
     ) 

    { 
     Application.LoadLevel("L1"); 
    } 
} 

用於隨機生成總和的腳本。

#pragma strict 

static var sumA :int = 0; 
static var sumB :int = 0; 

function Start() 
{ 
    var newSumA = Random.Range(6,10); 
    sumA = newSumA; 
    var newSumB = Random.Range(1,6); 
    sumB = newSumB; 

} 

function Update() { 
    //Question Output. 

    guiText.text = sumA.ToString() + " - " + sumB.ToString()+ " ="; 
} 

生成小行星隨機數的腳本。

#pragma strict 

var mainCam: Camera; 
static var asteroid1Value : int = 0; 
var asteroid1 : Transform; 
var Asteroid1Style : GUIStyle; 

function Start() 
{ 
    var newAsteroid1Value = Random.Range(0,10); 

    asteroid1Value = newAsteroid1Value; 

    asteroid1.position.x = mainCam.ScreenToWorldPoint (new Vector3 (160f, 0f, 0f)).x; 
    asteroid1.position.y = mainCam.ScreenToWorldPoint (new Vector3 (0f, 450f, 0f)).y; 

} 

function OnGUI() 
{ 
    var point = Camera.main.WorldToScreenPoint(transform.position); 
    GUI.Label(new Rect(point.x, Screen.currentResolution.height - point.y - 530, 110, 100), asteroid1Value.ToString(), Asteroid1Style); 
} 

function OnCollisionEnter(col : Collision) 
{ 

    if(asteroid1Value == (Sum_Script.sumA - Sum_Script.sumB)) 
    { 
     Destroy(gameObject); 
     Score_Script.score ++; 
    } 
    if(asteroid1Value != (Sum_Script.sumA - Sum_Script.sumB)) 
    { 
     Score_Script.score --; 
    } 

} 
+0

這不是JavaScript,是嗎? – Bergi

+3

爲什麼你不會只有4個隨機小行星,一個是正確的答案,而不是5個隨機? –

+2

@Bergi看起來像「[unityscript](http://wiki.unity3d.com/index.php/UnityScript_versus_JavaScript)」是非常像JavaScript,並且經常感到困惑。 –

回答

1

照你那樣做,爲你的小行星生成5個隨機數。

然後生成1和5之間的隨機數,這是你的隨機小行星,然後將其值設置爲答案。 (sumA - sumB)

0

你只需要抽象你的邏輯。

我可以做的最好的參數是,簡單地說,建立你的隨機數之前你建立你的小行星。

這樣,你總是有一個正確的。

我只想代碼:

function start(){ 
    var x = 5 //X being whatever number of asteroids you wish. 
    var a = new Array(); 
    for(var i=0; i<x; i++){ 
     a[i] = Random.Range(0,10); 
    } 

    for(i in a){ buildAsteroid(a[i]) } 
} 

而且......如果數量相匹配,成功。

+0

謝謝,我會試試這個。 –

相關問題