我试图让我的游戏角色(鱼)仅根据他们当前的视锥能够“看到”的东西去一个新生成的目的地,因此我画了一个三角形MC以使其成为他们的视锥从那里生成圆锥体区域内的随机点,我使用的代码如下所示,并且它不断返回我的舞台的顶部坐标,为什么会这样?我做了一个localToGlobal,它仍然是一样的
public function getRandomDestination():void
{
//Math.floor(Math.random()*(1+High-Low))+Low;
var conePoint:Point = new Point(Math.floor(Math.random() * cone.width), Math.floor(Math.random() * cone.height));
_destinationX = localToGlobal(conePoint).x;//Math.floor(Math.random()*(1+_maxX-100)+100);
trace(_destinationX);
_destinationY = localToGlobal(conePoint).y; //Math.floor(Math.random() *(1+_maxY-100)+100);
trace(_destinationY);
}
最佳答案
首先选择一个随机角度(在指定的半径内),然后使用该角度选择与鱼的随机距离不是更容易吗?
类似于:
function selectPosition(maxAngle:Number, maxDistance:Number):Object
{
var base:Number = rotation + (-(maxAngle/2) + Math.random()*maxAngle);
var radians:Number = base / 180 * Math.PI;
var dist:Number = Math.random()*maxDistance;
return {
x: Math.cos(radians) * dist,
y: Math.sin(radians) * dist
};
}
var result:Object = selectPosition(30, 100);
trace(result.x, result.y);
这将返回一个包含 x 和 y 点的对象,该点位于指定的角度和距离内。
上面的内容可以直观地表示为:
关于flash - 获取视野中的随机点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6952018/