我在做一个玩蛇的游戏。我创造了蛇和背景。
然后我试着创造出随机的食物给蛇吃。但我的食物是从背景债券中产生的。
代码:
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()
{
}
}
这是截图:
我怀疑你的背景以原点(0;0)为中心。它意味着它从左下角的(-宽度/2;-高度/2)到右上角的(宽度/2;高度/2)。
因此,如果您生成的值介于(0;0)和(width;height)之间,那么只有背景的右上角被覆盖,而食物可以超出这个范围。
两种解决方案:
A)移动背景,使其左下角为0;0
B)在正确的范围内生成食物位置,只需在相应的值上减去(宽度/2)和(高度/2)。