![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
|
вот написал код,который должен проверять столкновения героя и стены:
var speedX:Number; var speedY:Number; var tgtX:Number; var tgtY:Number; var boxP:int; trace("box1.x",box1.x,"box1.y",box1.y); stage.addEventListener(Event.ENTER_FRAME, tgtYz); function tgtYz(e:Event):void { if (boxP == 4) { tgtY = box.y - 3; } else if (boxP == 2) { tgtY = box.y + 3; } trace("tgtY",tgtY); } stage.addEventListener(Event.ENTER_FRAME, tgtXz); function tgtXz(e:Event):void { if (boxP == 1) { tgtX = box.x + 3; } else if (boxP == 3) { tgtX = box.x - 3; } trace("tgtX",tgtX); } stage.addEventListener(Event.ENTER_FRAME, stolknovenie); function stolknovenie(e:Event):void { if (tgtX == box1.x) { speedX = 0; } else { speedX = 3; } trace("speedX",speedX); } stage.addEventListener(Event.ENTER_FRAME, stolknovenie2); function stolknovenie2(e:Event):void { if (tgtY == box1.y) { speedY = 0; } else { speedY = 3; } trace("speedY",speedY); } box.stop(); stage.addEventListener(KeyboardEvent.KEY_DOWN, moveF); function moveF(e:KeyboardEvent):void { if (e.keyCode == Keyboard.UP) { box.y -= speedY; box.gotoAndStop(4); boxP = 4; } else if (e.keyCode == Keyboard.DOWN) { box.y += speedY; box.gotoAndStop(2); boxP = 2; } else if (e.keyCode == Keyboard.LEFT) { box.x -= speedX; box.gotoAndStop(3); boxP = 3; } else if (e.keyCode ==Keyboard.RIGHT) { box.x += speedX; box.gotoAndStop(1); boxP = 1; } trace("boxP",boxP); } бокс-герой бокс1-стена |
|
|||||
|
На мой взгляд, будет проще, если вы воспользуетесь методами hitTestObject() и hitTestPoint(). И если вы еще пишите в кадрах, перестаньте, начните писать в классах. По вашему коду, насколько я смог разобраться, проверяется не столкновение объектов, а совпадение их координат, что вовсе не одно и то же.
|
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Равенство tgtY == box1.y не наступает, видно. Ну потому что если изначально box1.y равно 0, то box1.y всегда будет кратно 3 и если tgtY не кратно 3, то равенства нет. При проверке столкновений вообще не любят равенство проверять. Можно как bav советует поступить, можно проверять не равенство, а пересечение tgtY, возможно не =, а >=, <= поможет.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:51. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| проверка столкновений |
|
|