![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2014
Сообщений: 5
|
Приветствую! Такой вопрос: в тех уроках, что я видел, стрельбу в TDS делают из центра героя. Но я никак не могу сообразить, как сделать, чтобы пуля вылетала из конкретного места, вот код и пример (клик мышью):
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; public class Main extends Sprite { var hero:Sprite; var dot:Sprite; public function Main() { hero = new Sprite(); hero.graphics.beginFill(0x000000); hero.graphics.drawCircle(0, 0, 10); hero.graphics.drawRect(10, 6, 10, 4); hero.graphics.endFill(); hero.x = hero.y = 150; addChild(hero); addEventListener(Event.ENTER_FRAME, update); stage.addEventListener(MouseEvent.CLICK, click); } public function update (e:Event):void { var dx:Number = mouseX - hero.x; var dy:Number = mouseY - hero.y; var ang = Math.atan2(dy, dx) / Math.PI * 180; hero.rotation = ang; } public function click (e:MouseEvent):void { dot = new Sprite; dot.graphics.beginFill(0xFF0000); dot.graphics.drawCircle(0, 0, 2); dot.graphics.endFill(); dot.x = hero.x + 20; dot.y = hero.y + 8; addChild(dot); } } } То есть rotation просто поворачивает картинку с ГГ, получется, мне надо как-то повернуть и его локальную координатную систему, чтобы пуля появлялась именно из дула "пистолета"? Или как-то переместить координаты точки вылета пули на тот же угол, что и у ГГ? |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
вариант 1))
вариант 2 — использовать localToGlobal().
Подумайте вперед. Пуля не только появиться должна в нужной точке, а еще и лететь в нужном направлении. Вы реально надеялись написать игру и ничего не считать?
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Jan 2014
Сообщений: 5
|
Цитата:
Просто хотел понять логику реализации этой задачи, вот, узнал теперь о localToGlobal(), буду разбираться, спасибо) |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:30. |
|
|
« Предыдущая тема | Следующая тема » |
|
|