私はプログラミングしているゲームに問題があります。私はセキュリティゲームのいくつかの並べ替えをしていると私は視力のいくつかの視線を持っていると思います。問題は、私の視界を制限することができず、私の警官が壁を透けて見ることができないということです。下には窓が見えるが壁は見えないデザインがあります。あなたの下には、私の問題が正確に描かれています。actionscriptで視線制限を実装する方法は?
これは、それが今のように見えるものです。ご覧のように、警官は壁を通して見ることができます。
これは私が視線を制限するために使用したいと思うのマップです。
下図のように私は今、視線をプログラミングしています方法は、単にいくつかのポイントを計算し、それに応じて姿を描くことです。私はまた、ビットマップデータを使ってヒットテストをチェックして、自分のプレイヤーがいずれかの警官によって発見されたかどうかをチェックします。
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