我有編程遊戲的問題。我正在製作某種安全遊戲,我希望有一些視覺上的視線。問題是我無法限制我的視線,所以我的警察無法看穿牆壁。下面你會發現他們可以通過窗戶看到的設計,而不是牆壁。進一步在下面,您可以找到我的問題確切的例子。如何在actionscript中實現視線限制?
這是什麼樣子了。正如你所看到的,警察可以看穿牆壁。
這是地圖我會想使用限制的視線。
所以我編程的視線的方式,現在只是通過計算一些點,並相應地繪製視線,如下圖所示。請注意,我還檢查了使用bitmapdata的hittest來檢查我的玩家是否被任何警察發現。
private function setSight(e:Event=null):Boolean
{
g = copCanvas.graphics;
g.clear();
for each(var cop:Cop in copCanvas.getChildren())
{
var _angle:Number = cop.angle;
var _radians:Number = (_angle * Math.PI)/180;
var _radius:Number = 50;
var _x1:Number = cop.x + (cop.width/2);
var _y1:Number = cop.y + (cop.height/2);
var _baseX:Number = _x1 + (Math.cos(_radians) * _radius);
var _baseY:Number = _y1 - (Math.sin(_radians) * _radius);
var _x2:Number = _baseX + (25 * Math.sin(_radians));
var _y2:Number = _baseY + (25 * Math.cos(_radians));
var _x3:Number = _baseX - (25 * Math.sin(_radians));
var _y3:Number = _baseY - (25 * Math.cos(_radians));
g.beginFill(0xff0000, 0.3);
g.moveTo(_x1, _y1);
g.lineTo(_x2, _y2);
g.lineTo(_x3, _y3);
g.endFill();
}
var _cops:BitmapData = new BitmapData(width, height, true, 0);
_cops.draw(copCanvas);
var _bmpd:BitmapData = new BitmapData(10, 10, true, 0);
_bmpd.draw(me);
if(_cops.hitTest(new Point(0, 0), 10, _bmpd, new Point(me.x, me.y), 255))
{
gameover.alpha = 1;
setTimeout(function():void{ gameover.alpha = 0; }, 5000);
stop();
return true;
}
return false;
}
所以現在我的問題是:有沒有人誰知道如何限制視圖,以便警察不能穿牆看?提前致謝。
ps:我已經看過emanuele feronato的this教程,但是我不能用代碼限制視線。
您可能會更好張貼了在gamedev.stackexchange.com :) – Harold
我在那裏張貼過,感謝提示:) –
你可能會首先測試的距離給玩家每次都避免畫出像素。 – alxx