【问题标题】:Unity Random Game Objects are spawning out of bondUnity 随机游戏对象从键中生成
【发布时间】:2021-02-06 15:44:36
【问题描述】:

我正在尝试制作一个蛇游戏。我创建了蛇和背景。

然后我尝试生成随机食物供蛇吃。但是我的食物是从背景债券中产生的。

代码:

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()
{
   
    
}

}

这是截图:

【问题讨论】:

    标签: c# unity3d random


    【解决方案1】:

    我怀疑您的背景以原点 (0;0) 为中心。这意味着它从左下角的 (-width/2;-height/2) 跨越到右上角的 (width/2; height/2)。

    因此,如果您生成介于 (0;0) 和 (width;height) 之间的值,则仅覆盖背景的右上角,食物可以超出此范围。

    两种解决方案:

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

    B) 通过简单地在相应值上减去 (width/2) 和 (height/2),生成正确范围内的食物位置。

    【讨论】:

    • 哦,谢谢。你说的对。我的背景以原点为中心。这就是为什么我的苹果超出背景范围的原因。我解决了。谢谢回答
    猜你喜欢
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多