我創建了一個太空侵略者遊戲,玩家必須射擊一個顯示隨機數的小行星。總和也將在場景開始時隨機生成。一旦玩家射擊一個小行星,場景重新加載,獲得正確答案的積分。生成幾個隨機數,其中之一必須是正確的答案?
我遇到的問題是我需要至少一個小行星來顯示正確的答案。我目前通過重新加載場景來實現這一點,直到小行星號碼與總和的答案相匹配。這可能需要重新加載,看起來非常糟糕。有沒有更好的方法來實現這將看起來更好,更高效。下面列出了我的努力。我很欣賞任何評論。謝謝!
用於檢查正確答案和重新加載場景的腳本。
#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 --;
}
}
這不是JavaScript,是嗎? – Bergi
爲什麼你不會只有4個隨機小行星,一個是正確的答案,而不是5個隨機? –
@Bergi看起來像「[unityscript](http://wiki.unity3d.com/index.php/UnityScript_versus_JavaScript)」是非常像JavaScript,並且經常感到困惑。 –