【问题标题】:I want to create a C# Script that creates a random infinite map for my grappling game我想创建一个 C# 脚本,为我的格斗游戏创建一个随机无限地图
【发布时间】:2021-03-12 15:52:31
【问题描述】:

我制作了一个 2D 格斗游戏,在该游戏中,玩家应该通过从一个对象到另一个对象进行格斗来穿越地图。现在我只是将其中一些预制件拖到我的场景中以尝试游戏玩法。我也有一些能量提升和障碍。但是,我希望地图在 x 轴上是无限的。为了实现这一点,我想在玩家或更好的相机边界移动时随机实例化我的地图预制件。此外,我希望脚本能够处理地图预制的不同概率和随机生成位置。 我不太确定如何解决这个问题,因为我不知道使用某种随机生成的、被实例化的块或其他东西是否有意义。

我目前唯一编写的脚本是这样的:

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

public class MapBuilder : MonoBehaviour
{
    private Vector2 screenBounds;

    [Header("Map Prefabs:")]
    public GameObject Rec;
    public GameObject Circle;
    public GameObject Coin;
    public GameObject Thorn;
    public GameObject Time;
    public GameObject Boost;
    public GameObject Multi;
    public GameObject Disabler;

    void Start()
    {
        screenBounds = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, Camera.main.transform.position.z));
    }


}

SceneView

Game Screenshot

【问题讨论】:

  • 问题非常广泛。 stackoverflow.com/help/how-to-ask
  • 欢迎。我回答了一个可能的算法。我认为您的问题有点过于宽泛,无法包含所有需要的代码。希望这能让你开始。

标签: c# dictionary unity3d


【解决方案1】:

最佳方法很大程度上取决于您到底想要什么。这是我想到的第一个选项。

  1. 首先生成中间矩形及其周围的所有矩形
  2. 当相机中心超出边缘之一时,生成新的矩形,以便始终生成相机周围的地图。例如,如果您的相机转到矩形 (1,0),则生成 (2, -1)、(2, 0) 和 (2, 1)

生成一个矩形:

  1. 在该矩形上生成任意数量的地图元素。
  2. 随机化它们在该矩形内的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2018-09-08
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多