随机将MovieClip放在不规则形状的物体上?

时间:2011-03-08 19:26:38

标签: actionscript-3 random

是否有将MovieClip / Sprite随机放置在不规则形状的物体上?

对于一个矩形,它似乎非常简单(即使用Math.random,范围是一个对象的坐标)......但是如果说,你想避免将对象放在中心?

2 个答案:

答案 0 :(得分:1)

您可以绘制图像地图,其中允许的区域为白色,阻挡区域为黑色。现在,您可以检查每个随机选择的位置是否被阻止。

This tutorial说明了我的意思,即使它有点过时了:页面底部游戏的被阻挡区域由上面嵌入的swf中显示的精灵的绿色决定。

答案 1 :(得分:1)

您可以尝试定义一个Shape对象,使用绘图API创建不规则形状,然后对Shape中边界内随机生成的点执行hitTestPoint()。在您的位置放置代码中,您可以创建一个重复循环,直到命中测试返回false,这意味着该点不在避免区域内。

var avoidMe:Shape = new Shape();
avoidMe.graphics.beginFill(0x0000FF, 0); //make it transparent fill
avoidMe.graphics.lineTo(x1, y1);
avoidMe.graphics.lineTo(x2, y2);
avoidMe.graphics.lineTo(x3, y3);
avoidMe.graphics.lineTo(xn, yn);
avoidMe.endFill();
addChild(avoidMe);

var w:Number = 100; //width of placement area
var h:Number = 100; //height of placement area
var p:Point = new Point();

do {
  p.x = Math.random() * w;
  p.y = Math.random() * h;
}
while (avoidMe.hitTestPoint(p.x, p.y));

var s:Sprite = new Sprite();
s.x = p.x;
s.y = p.y;

addChild(s);

您还可以使用hitTestObject()执行非常类似的操作来测试对象的实际边界而不是点。