如何在网格中正确实例化瓦片地图

问题描述 投票:0回答:1

所以我正在统一游戏中制作一个 2D 平台运行游戏,目前我制作了一些 Tilemaps,它们是平台部分,然后是预制件,然后我尝试生成平台,但是当我使用管理生成的脚本来执行此操作时级别,而不是制作整个部分,而是将其压缩在当前网格的单个单元格中。

public class LevelGenerator : MonoBehaviour
{
    private const float PLAYER_GENERATION_DISTANCE = 200f;
    [SerializeField] private Transform StartLevel;
    [SerializeField] private List<Transform> levelPartsList;
    [SerializeField] private GameObject player; 

    private Vector3 lastEndPosition;
    
    
    private void Awake()
    {
        player = GameObject.FindWithTag("Player");
        lastEndPosition = StartLevel.Find("endPosition").position;
    }

    void Update(){
        if (Vector3.Distance(player.transform.position, lastEndPosition) < PLAYER_GENERATION_DISTANCE)
        {
            print("I am WOrking!!!");
            SpawnLevelPart();
        }
    }

    private void SpawnLevelPart()
    {
        Transform selectRandomType = levelPartsList[Random.Range(0,levelPartsList.Count)];
        Transform lastLevelPartTransform = SpawnLevelPart(selectRandomType,lastEndPosition);
        lastEndPosition = lastLevelPartTransform.Find("endPosition").position;
    }

    private Transform SpawnLevelPart(Transform levelPart,Vector3 spawnPosition)
    {
        Transform levelPartTransform = Tilemap.Instantiate(levelPart,spawnPosition,Quaternion.identity);
        return levelPartTransform;

    }
}

The compressed Tile map The prefab

当我手动将 Tilemap 放入网格中时,它工作正常,但如何实例化然后将其作为子组件移动到网格组件中?

unity-game-engine game-development hierarchy tiles 2d-games
1个回答
0
投票

如何正确实例化tilemap prefab? - 您只需将其实例化为具有“网格”组件的对象的子对象即可:

[SerializeField] private Transform objectWithGrid; 

private Transform SpawnLevelPart(Transform levelPart,Vector3 spawnPosition)
{
    Transform levelPartTransform = Tilemap.Instantiate(levelPart, objectWithGrid,spawnPosition,Quaternion.identity);
    return levelPartTransform;

}

instantiate 的第二个参数是一个转换,它将成为新实例化对象的父对象。

© www.soinside.com 2019 - 2024. All rights reserved.