flash - 获取视野中的随机点

标签 flash actionscript-3

我试图让我的游戏角色(鱼)仅根据他们当前的视锥能够“看到”的东西去一个新生成的目的地,因此我画了一个三角形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 点的对象,该点位于指定的角度和距离内。

上面的内容可以直观地表示为:

enter image description here

关于flash - 获取视野中的随机点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6952018/

相关文章:

php - 将数组从 Flash 传递到 PHP

actionscript-3 - 声音字节数组的AS3播放不是从一开始就开始

apache-flex - 在 DisplayObjectContainer 上调用 addChild 或 removeChild 方法时会发生什么?

apache-flex - 在 ActionScript 3 中加密/解密图像

带有提示点的 HTML 5 视频

Javascript 在 dom 内部移动时失去与 flash 的通信

objective-c - 无法使用 adt 构建 Air iPhone 应用程序(带有 iOS native 扩展)

javascript - 如何使用 javascript 显示/隐藏 Flash 对象

javascript - 使用navigateToURL(request, "_blank")模拟MiddleClick行为?

flash - 为 Mac 和 PC 编译 Flash