我想随机化ballValue的范围从1到100
本文关键字:范围 随机化 ballValue | 更新日期: 2023-09-27 18:11:00
如何将ballValue从随机范围1到100随机化,使每个球具有不同的值对象
的随机值using UnityEngine;
using System.Collections;
public class HT_Score : MonoBehaviour {
public GUIText scoreText;
public int ballValue;
private int score;
void Start () {
score = 0;
UpdateScore ();
}
void OnTriggerEnter2D (Collider2D other) {
score += ballValue;
UpdateScore ();
}
void OnCollisionEnter2D (Collision2D collision) {
if (collision.gameObject.tag == "Bomb") {
score -= ballValue * 2;
UpdateScore ();
}
}
void UpdateScore () {
scoreText.text = "SCORE:'n" + score;
}
}
你的函数应该看起来像
void GetRandomBallValue()
{
ballValue=new Random().Next(1,100);
}
void OnCollisionEnter2D (Collision2D collision) {
if (collision.gameObject.tag == "Bomb") {
GetRandomBallValue();
score =ballValue * 2;
UpdateScore ();
}
}
你不应该每次都调用new Random()
"每次执行new Random()时,都会使用时钟初始化它。这意味着在一个紧密循环中,你会多次得到相同的值。你应该保留一个随机实例,并在同一个实例上继续使用Next。"在这里看到的:只生成一个随机数的随机数生成器
您还必须考虑,next()返回一个从1到100(不包括100)的随机数。如果希望包含100,则需要调用next(1,101)。
我建议这样做:
Random rnd = new Random();
void GetRandomBallValue()
{
ballValue=rnd.Next(1,101); //excluding 101 - if you do not need 100, call Next(1,100);
}
void OnCollisionEnter2D (Collision2D collision) {
if (collision.gameObject.tag == "Bomb") {
GetRandomBallValue();
score =ballValue * 2;
UpdateScore ();
}
}