【Unity】通过柏林噪声生成无限随机地图并生成资源(区块化)

 代码

先上代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Tilemaps;

public class InfiniteMapGenerator : MonoBehaviour
{
    // Start is called before the first frame update
    public int chunkSize = 16;
    public float scale = 0.1f;
    public Tilemap tilemap;
    public Tile[] tiles;
    public GameObject treePrefab;
    public Transform playerTransform; 

    private Dictionary<Vector2Int, bool> activeChunks = new Dictionary<Vector2Int, bool>();
    private Dictionary<Vector2Int, List<Vector3>> chunkTreePositions = new Dictionary<Vector2Int, List<Vector3>>();
    private Dictionary<Vector2Int, List<GameObject>> chunkTrees = new Dictionary<Vector2Int, List<GameObject>>();
    private Vector2Int currentChunk = new Vector2Int(0, 0);
    private int seed;

    void Start()
    {
        seed = Random.Range(0, 100001);
        Random.InitState(seed);

        // 找到一个合适的起始位置
        Vector3 startPosition = FindSuitableStartPosition();
        playerTransform.position = startPosition;

        // 初始化当前块
        currentChunk = new Vector2Int(Mathf.FloorToInt(startPosition.x / chunkSize), Mathf.Fl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值