Unity_生成物品

之前学习做游戏一直找不到如何生成物品,今天才用AI加持下完成了这段C#代码:

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

public class shenchen : MonoBehaviour
{
    public GameObject itemPrefab; // 你要生成的物品的预设
    public float spawnRadius = 10f; // 生成物品的半径
    public LayerMask groundLayer; // 地面层,确保物品生成在地面上
    public float minSpawnHeight = 1f; // 生成物品的最小高度
    public float maxSpawnHeight = 5f; // 生成物品的最大高度
    public float spawnInterval = 5f; // 生成物品的间隔时间(秒)

    private Dictionary<Vector3Int, GameObject> itemDictionary = new Dictionary<Vector3Int, GameObject>(); // 物品字典,用以记录物品位置

    void Start()
    {
        // 启动物品生成协程
        StartCoroutine(SpawnItemsCoroutine());
    }

    IEnumerator SpawnItemsCoroutine()
    {
        while (true)
        {
            // 等待指定的时间间隔
            yield return new WaitForSeconds(spawnInterval);

            // 随机生成物品
            SpawnItem();
        }
    }

    void SpawnItem()
    {
        Vector3 randomPos;
        Vector3Int gridPos;

        // 在指定半径和高度范围内随机选取一个位置,并确保生成的物品在地面上
        do
        {
            randomPos = transform.position + Random.insideUnitSphere * spawnRadius;
            randomPos.y = Random.Range(minSpawnHeight, maxSpawnHeight); // 设置生成物品的高度
            gridPos = Vector3Int.RoundToInt(randomPos);
        } while (!IsValidPosition(gridPos) || IsItemAtPosition(gridPos));

        // 创建一个新的物品
        GameObject item = Instantiate(itemPrefab, randomPos, Quaternion.identity);

        // 将物品添加到字典中
        itemDictionary[gridPos] = item;
    }

    bool IsValidPosition(Vector3Int position)
    {
        // 这里可以添加额外的检查,例如确保位置在地图边界之内等
        return true;
    }

    bool IsItemAtPosition(Vector3Int position)
    {
        // 检查字典中是否已经有这个位置的物品
        return itemDictionary.ContainsKey(position);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值