【发布时间】:2023-01-13 17:57:24
【问题描述】:
所以我正在尝试在 Unity 中制作一个 2D Snake 游戏,它是由 4 个不同的 C# 脚本制作的。
在这个特别的例子中,我尝试删除蛇吃的食物,但没有任何反应(它在代码中标记),其他功能工作正常。我什至没有收到错误。
如果您需要其他脚本,我也可以发送。
public void SnakeMoved(Vector2Int snakeGridPosition)
{
if (snakeGridPosition == foodGridPosition)
{
Object.Destroy(foodGameObject);
SpawnFood();
}
}
我试图查看 IF 子句中的其余部分是否有效,其余部分是否正常工作。我不知道我做错了什么。
foodGameObject 的代码:
private void SpawnFood()
{
foodGridPosition = new Vector2Int(Random.Range(0, width), Random.Range(0, height));
GameObject foodGameObject = new GameObject("Food", typeof(SpriteRenderer));
foodGameObject.GetComponent<SpriteRenderer>().sprite = GameAssets.i.foodSprite;
foodGameObject.transform.position = new Vector3(foodGridPosition.x, foodGridPosition.y);
}
【问题讨论】:
-
究竟是什么不起作用 - 换句话说,为什么你认为游戏对象没有被破坏?
-
游戏对象是蛇应该吃的“食物”,食物被吃掉后它应该从场地消失。但我仍然可以看到它。
-
请通过添加启动
foodGameObject的部分来完成问题。尽管这是一个很明显的猜测。 -
这可能是 3,2 与 3,2.00000001 不同的位置的浮点问题,可能是新食物在旧食物产卵的地方产卵。这可能是很多事情
-
foodGameObject是什么对象类型?GameObject或MonoBehaviour?