|
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
Правильное вращение объекта
Столкнулся с проблемой правильного вращения объекта по координатам мыши :
данный пример стоит и не работает, есть у кого готовая формула для правильного вращения по координатам мыши ? |
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
я пробовал менять менять формулу было местами где-то похожее на правильное реагирование, но так как есть сейчас объект вращается "как-то вообще не понятно" , не делая даже 360 градусов.
P.S.вращение объекта только тут присваиваться |
|
|||||
Регистрация: Dec 2006
Сообщений: 1,764
|
так все же? что надо и что у вас есть?
__________________
а за окном атлантический океан! |
|
|||||
Проблема в переменных mousePositionX и mousePositionY. Вот набросал рабочий пример.
package { import flash.display.Graphics; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; /** * ... * @author bav */ [Frame(factoryClass="Preloader")] public class Main extends Sprite { private var hero:Sprite; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); hero = new Sprite(); var g:Graphics = hero.graphics; g.lineStyle(1); g.beginFill(0xFFFF00); g.moveTo( -10, -10); g.lineTo(10, 0); g.lineTo(-10, 10); g.lineTo( -10, -10); g.endFill(); hero.x = stage.stageWidth / 2; hero.y = stage.stageHeight / 2; addChild(hero); stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); } private function mouseMoveHandler(e:MouseEvent):void { var dx:Number = e.stageX - hero.x; var dy:Number = e.stageY - hero.y; hero.rotation = Math.atan2(dy, dx) * 180 / Math.PI; var g:Graphics = this.graphics; g.clear(); g.lineStyle(2, 0xFF0000); g.moveTo(hero.x, hero.y); g.lineTo(e.stageX, e.stageY); } } } |
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
Надо чтоб герой вращался в указанную сторону мышкой , а при данной формуле он "смотрит" только в правый нижний угол игрового поля, и в зависимости где мышка иногда может повернуться на 30-40 градусов ниже или выше
А есть у меня вот такой вот код : // create hero hero = new Sprite; hero.graphics.beginFill(0xff0000, 1); hero.graphics.drawRect( -15, -15, 30, 50); hero.graphics.endFill(); hero.x = 200; hero.y = 200; addChild(hero); private function mouseMoveHandler(event:MouseEvent):void {// может тут что-то не правильно... if(event.stageX > gameWidth * .1 && event.stageX < gameWidth * .9) { mousePositionX = event.stageX; } if(event.stageY > gameHeight * .5 && event.stageY < gameHeight * .9) { mousePositionY = event.stageY; } } private function enterFrameHandler(event:Event):void { var dx:Number = mousePositionX - hero.x; var dy:Number = mousePositionY - hero.y; hero.rotation =Math.atan2(dy, dx) * 180 / Math.PI; } |
|
|||||
Может просто координаты героя в глобальной системе вовсе не (200, 200)?
Плюс не факт, что mouseMoveHandler срабатывает Напишите надёжнее: Или даже так: |
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
Цитата:
Косяк в том что примерно ровно 90 градусов между тем куда смотрит герой и куда поидеи он "должен смотреть на мышку"... все перепроверил 1000 раз не могу понять... Цитата:
попробовал даже ваш : все равно, вот 90 градусов как буд-то не хватает... |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Так может нарисовать героя надо было смотрящим в нужную сторону (на 3 часа, а не на 0)?
Ну или просто доворачивать его на 90.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
Цитата:
Спасибо большое за помощь |
Часовой пояс GMT +4, время: 21:27. |
|
« Предыдущая тема | Следующая тема » |
|
|