【问题标题】:Assigning a rare drop chance to object in simple Actionscript 3.0 game在简单的 Actionscript 3.0 游戏中为对象分配罕见的掉落机会
【发布时间】:2013-08-20 16:01:29
【问题描述】:

我对所有这些 Flash CS6 动作脚本 3.0 的东西都很陌生,我希望找到一些不同的方法来在 AS3 的影片剪辑阵列上应用罕见的丢弃机会。我有一个随机概率代码,它对敌人非常有效,因为他们更频繁地掉落,但是我希望我的玩家能够抓住并获得生命的心很少掉落。

这是我目前所拥有的代码,它掉了太多的心。我试过摆弄这些数字,但我似乎只会让它变得更糟。有什么建议吗?

function makeHeart():void
{
    var chance:Number = Math.floor(Math.random() * 60);
    if (chance <= 1 + level)
    {
        var tempHeart:MovieClip;
        tempHeart = new Heart();
        tempHeart.speed = 3;
        tempHeart.x = Math.round(Math.random() * 800);
        tempHeart.cacheAsBitmapMatrix = tempHeart.transform.concatenatedMatrix;
        tempHeart.cacheAsBitmap = true;
        trace("tempHeart");
        addChild(tempHeart);
        hearts.push(tempHeart);
    }
}

【问题讨论】:

  • 将 60 替换为 600000000,心会下降得更少(但是,这完全取决于“级别”的值)
  • 为了更清楚起见,Math.random() 将返回一个介于 0 和 1 之间的“随机”数字。因此,通过将 Math.random() 乘以某个数字 x,然后生成一个介于 0 和 1 之间的“随机”数字0 和x。现在您调整xlevel 的值,以使您的事情或多或少地发生。

标签: android arrays actionscript-3 random game-development


【解决方案1】:

嗯,这个问题要么太简单了,要么就是我没听懂。 但是,如果我确实理解正确,这就是出路:

假设您希望有 1% 的几率心碎。由于您为 chance 变量使用 Number 类,并且 Math.random() 也返回一个 Number,因此您不需要任何转换。

Math.random() 返回一个介于 0 和 1 之间的数字(浮点数),不包括 1

所以你 1% 的代码可能看起来像这样:

var chance:Number = Math.random();
if (chance <= 0.01)
{
    //enter code here
}

是的,因为你调用的不需要的函数更少,它的工作速度更快。 Math.random() 给出了一个非常精确的数字,远远超过 1/100,因此可以为机会可能性制作一个更少的数字,这是从 Math.random() 返回的一个值:

Math.random(); // 0.9044877095147967

【讨论】:

  • 谢谢大家的帮助,代码现在运行得很好:)非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多