【发布时间】:2018-02-04 09:54:53
【问题描述】:
所以,我正在制作这个小游戏,其中角色通过自动滚动相机不断向上移动。角色从一个平台跳到另一个平台,一旦平台或背景图块不再可见,我就会将其循环回来。我为我的平台分配了一个范围,随机发生器从中选择一个值,以便玩家每次开始游戏时都可以获得一组单独的平台。问题是循环:因为我在 start() 函数中进行随机化,平台的随机位置只分配一次,然后一次又一次地循环。所以游戏在几个循环后变得有点无聊,就像在 20 秒后:D
这是我的代码:
private float randomFloat = 0;
private int subOrAdd = 0;
// Use this for initialization
void Start () {
subOrAdd = Random.Range(1, 10);
randomFloat = Random.Range(0f, 1.4f);
// randomly add or subtract height of object
if (subOrAdd < 6)
{
this.transform.position = new Vector2(transform.position.x, transform.position.y - randomFloat);
}
else if (subOrAdd >= 6)
{
this.transform.position = new Vector2(transform.position.x, transform.position.y + randomFloat);
}
}
基本上,我有一个硬编码范围,然后随机决定添加或减去超出范围的数字。那么我将如何做到这一点,让循环的对象总是要求一个新的位置?因为你知道 start 只被调用一次,即使在循环之后,位置也保持不变。我希望我在这里说清楚了:)
任何帮助都会很棒!
这是循环平台的代码:
public class PlattformLooper : MonoBehaviour {
public float spacingBetweenLoops = 0f;
private void OnTriggerEnter2D(Collider2D collider)
{
if (collider.gameObject.tag == "Plattform")
{
Debug.Log("TRIGGERED Plattform!");
float heightOfBGObj = ((BoxCollider2D)collider).size.y;
Vector3 pos = collider.transform.position;
pos.y += heightOfBGObj * (5*5)+spacingBetweenLoops;
collider.transform.position = pos;
}
}
【问题讨论】: