每次重新启动游戏时都会更改砖块精灵位置
Changing bricks sprite position everytime I restsrt the game
我正在制作一个砖块破坏游戏,其中砖块放置如下:
现在我想要的是,每当我开始我的新游戏或游戏结束后重新开始时,砖块应该随机改变但位置不应该改变!
有谁知道我该怎么做?我应该更改 Bricks 脚本还是 Inspector 本身或两者?
这是积木脚本:
public class BricksScript : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnCollisionEnter2D(Collision2D col){
if (col.gameObject.tag == "ball") {
gameObject.SetActive (false);
}
}
}
我的 Unity 安装在其他地方,但这里是一个总体思路:
- 创建一个空的游戏对象并附加一个管理积木的脚本。
- 在层次结构中,将积木附加到 brickmanager 对象。
- 在 brick 管理器脚本
Start()
方法中:
- 遍历一次积木得到它们所有的位置并将它们存储在一个列表中
- 然后第二次从您的列表中为他们分配随机位置。
或者,您可以将位置硬编码为积木管理器脚本中的代码,或使用空游戏对象来保存位置。
谢谢大家我解决了我的问题如下:
- 首先我创建了一个
empty gameobject
并附加了一个 script
。
然后我将脚本编码如下:
public class positionsBricks : MonoBehaviour {
public GameObject[] bricks;
int brickNo;
// Use this for initialization
void Start () {
Vector3 Brickpos = new Vector3 (transform.position.x, transform.position.y, transform.position.z);
brickNo = Random.Range (0, bricks.Length);
Instantiate (bricks [brickNo], Brickpos, transform.rotation);
}
// Update is called once per frame
void Update () {
}
}
在 inspector 处,我将所有预制件 拖放到脚本中,然后
- 我复制了
gameobject
并将其放置在较早的原始 prefabs
所在的相同位置并删除了旧的
我正在制作一个砖块破坏游戏,其中砖块放置如下:
现在我想要的是,每当我开始我的新游戏或游戏结束后重新开始时,砖块应该随机改变但位置不应该改变!
有谁知道我该怎么做?我应该更改 Bricks 脚本还是 Inspector 本身或两者?
这是积木脚本:
public class BricksScript : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnCollisionEnter2D(Collision2D col){
if (col.gameObject.tag == "ball") {
gameObject.SetActive (false);
}
}
}
我的 Unity 安装在其他地方,但这里是一个总体思路:
- 创建一个空的游戏对象并附加一个管理积木的脚本。
- 在层次结构中,将积木附加到 brickmanager 对象。
- 在 brick 管理器脚本
Start()
方法中:- 遍历一次积木得到它们所有的位置并将它们存储在一个列表中
- 然后第二次从您的列表中为他们分配随机位置。
或者,您可以将位置硬编码为积木管理器脚本中的代码,或使用空游戏对象来保存位置。
谢谢大家我解决了我的问题如下:
- 首先我创建了一个
empty gameobject
并附加了一个script
。 然后我将脚本编码如下:
public class positionsBricks : MonoBehaviour { public GameObject[] bricks; int brickNo; // Use this for initialization void Start () { Vector3 Brickpos = new Vector3 (transform.position.x, transform.position.y, transform.position.z); brickNo = Random.Range (0, bricks.Length); Instantiate (bricks [brickNo], Brickpos, transform.rotation); } // Update is called once per frame void Update () { } }
在 inspector 处,我将所有预制件 拖放到脚本中,然后
- 我复制了
gameobject
并将其放置在较早的原始prefabs
所在的相同位置并删除了旧的