提问者:小点点

Unity随机游戏对象从邦德中产生


我在做一个玩蛇的游戏。我创造了蛇和背景。

然后我试着创造出随机的食物给蛇吃。但我的食物是从背景债券中产生的。

代码:

public class FoodHandler {

private Vector2Int foodPosition ;
private int width;
private int height;

public FoodHandler(int width, int height)
{
    this.width = width;
    this.height = height;

    SpawnFood();
    FunctionPeriodic.Create(SpawnFood, 1f);

}


private void SpawnFood()
{
    foodPosition = new Vector2Int(Random.Range(0, width), Random.Range(0, height));
    GameObject foodGameObject = new GameObject("Snake'sFood", typeof(SpriteRenderer));
    foodGameObject.GetComponent<SpriteRenderer>().sprite = GameAssets.i.foodSprite;
    foodGameObject.transform.position = new Vector3(foodPosition.x, foodPosition.y);
    
}

       }



public class GameHandler : MonoBehaviour {

private FoodHandler foodHandler;

private void Start() {

    foodHandler = new FoodHandler(20, 20);
}

private void Update()
{
   
    
}

}

这是截图:


共1个答案

匿名用户

我怀疑你的背景以原点(0;0)为中心。它意味着它从左下角的(-宽度/2;-高度/2)到右上角的(宽度/2;高度/2)。

因此,如果您生成的值介于(0;0)和(width;height)之间,那么只有背景的右上角被覆盖,而食物可以超出这个范围。

两种解决方案:

A)移动背景,使其左下角为0;0

B)在正确的范围内生成食物位置,只需在相应的值上减去(宽度/2)和(高度/2)。