У меня проблема с игрой, которую я программирую.Я делаю какую-то игру по безопасности, и я хотел бы иметь некоторую визуальную линию обзора.Проблема в том, что я не могу ограничить линию обзора, чтобы мои копы не могли видеть сквозь стены.Ниже вы найдете дизайн, в котором они могут смотреть через окна, но не через стены.Ниже вы найдете иллюстрацию того, в чем конкретно состоит моя проблема.
Вот как это выглядит сейчас.Как видите, копы видят сквозь стены.
Это карта, которую я хотел бы использовать для ограничения линии обзора.
Итак, теперь я программирую линию визирования, просто вычисляя некоторые точки и рисуя прицел соответственно, как показано ниже.Обратите внимание, что я также проверяю на предмет попадания, используя битовые данные, чтобы проверить, был ли мой игрок замечен каким-либо из полицейских.
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, но я не могу использовать код, чтобы ограничить визуальную линию обзора.