我创造了一个太空入侵者游戏,其中玩家必须射击一个显示随机数的小行星。也将在场景开始时随机生成总和。一旦玩家射击小行星,场景就会重新加载,并获得正确答案的分数。
我遇到的问题是我需要至少一个小行星才能显示正确的答案。我目前通过重新加载场景来实现这一目标,直到小行星数字与总和的答案相匹配。这可能需要很多重载并且看起来非常糟糕。有没有更好的方法来实现这一点,看起来更好,效率更高。我在下面列出了我的努力。我感谢任何评论。谢谢!
用于检查正确答案并重新加载场景的脚本。
#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 :(得分:1)
正如您所做的那样,为您的小行星生成5个随机数。
然后生成1到5之间的随机数,这是你的随机小行星,然后将其值设置为答案。 (sumA - sumB)
答案 1 :(得分: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]) }
}
并且...如果数字匹配,则成功。