C# 高级渐进难度怪物产卵器
我正在创造一个进步的怪物产卵器,就像《冒雨2》中的那个一样。我们的目标是要有一个充满层层怪物的层。随着时间的增加,越来越多的层可供产卵者产卵怪物。因此,在游戏结束时,最强的一级怪物诞生了。但是,我希望根据可用层的数量对层和层中的层进行加权,并且在游戏结束时,第7层比第1层更有可能产生。但是在中间层1同样可用。 我在一个结构中有一个结构。第一个结构确定敌人所在的层,第二个结构确定敌人所在层内的层 有一个CurrentTierDifficity变量,它基于经过的时间。当前的层映射从1开始,在任意层数的层上结束。(实际上大约为8或更少)。当前tier难度每秒钟增加约0.002,大约一小时后达到tier 8 CurrentTierCap是将CurrentTierCap四舍五入到最接近的整数 低于当前上限的任何级别都可以选择 我希望每一层都要加权 例如:CurrentTierDifficity=3.6 currentTierCap=4C# 高级渐进难度怪物产卵器,c#,unity3d,math,C#,Unity3d,Math,我正在创造一个进步的怪物产卵器,就像《冒雨2》中的那个一样。我们的目标是要有一个充满层层怪物的层。随着时间的增加,越来越多的层可供产卵者产卵怪物。因此,在游戏结束时,最强的一级怪物诞生了。但是,我希望根据可用层的数量对层和层中的层进行加权,并且在游戏结束时,第7层比第1层更有可能产生。但是在中间层1同样可用。 我在一个结构中有一个结构。第一个结构确定敌人所在的层,第二个结构确定敌人所在层内的层 有一个CurrentTierDifficity变量,它基于经过的时间。当前的层映射从1开始,在任意层数
第1层也许你想要的是这样的: 您只需定义
最大重量
以及最小层
、最大层
和峰值层
的起始和结束位置。让我们把它们称为start\u min\u tier
,start\u max\u tier
,start\u peak\u tier
,end\u min\u tier
,end\u max\u tier
和end\u peak\u tier
你想要的是在游戏过程中从X_层
过渡到X_层
(我用的是“X”,所以我不必重复三次)。因此,每10秒,您将游戏中的X层
增加10*(结束X层-开始X层)/秒数
然后,您希望能够获得层的权重T
知道min\u层
,max\u层
和峰值层
。这很简单:
- 如果
则T
重量(T)=0
- 如果
则T>max_tier
重量(T)=0
- 如果
min\u tier可能您想要的是这样的: 您只需定义
以及最大重量
、最小层
和最大层
的起始和结束位置。让我们把它们称为峰值层
,start\u min\u tier
,start\u max\u tier
,start\u peak\u tier
,end\u min\u tier
和end\u max\u tier
你想要的是在游戏过程中从end\u peak\u tier
过渡到X_层
(我用的是“X”,所以我不必重复三次)。因此,每10秒,您将游戏中的X_层
增加X层
然后,您希望能够获得层的权重10*(结束X层-开始X层)/秒数
知道T
,min\u层
和max\u层
。这很简单:峰值层
- 如果
则T
重量(T)=0
- 如果
则T>max_tier
重量(T)=0
- 如果<代码>最小层
[Serializable] public struct EnemyTier { public float BaseWeight; [Serializable] public struct NamedEnemy { public string name; public int BaseHealth; public float BaseDamage; public float BaseSpeed; public GameObject EnemyPrefab; } public NamedEnemy[] Enemie; } public EnemyTier[] Enemies; int TotalNumberofTiers; public int TimeinMinutes = 400; public float TierDifficulty = 1; public float TierIncreasePer10Seconds;//default is 0.002 per sec = 7.2 in one hour private void Start() { TotalNumberofTiers = Enemies.Count(); TierIncreasePer10Seconds = TotalNumberofTiers / TimeinMinutes; InvokeRepeating("DifficultyAdjustment", 10,10); } /// <summary> /// selects the appropriate enemy from the structs /// </summary> public GameObject EnemySelection() { int PrecentageChance = 100 / TotalNumberofTiers; int CurrentTierCap = Mathf.RoundToInt(TierDifficulty); public void DifficultyAdjustment() { TierDifficulty += TierIncreasePer10Seconds; }
- 如果