![]() |
|
||||||||||
|
|||||
|
[+1 26.12.11]
[+1 11.09.11] Регистрация: Feb 2011
Сообщений: 117
|
Проблема в следующем, что имеем 2 многоугольника, у одного скорость 0.5, у второго 1. На деле имеем что движутся они с одинаковой скоростью
код элементарный, public function MoveBody (object:DisplayObject, t : Number ):void // перемещаем центр спрайта не апдейтя его вершин { trace("object.x0=",object.x); object.x+=Vx; trace("object.x1=",object.x); } вот свф Последний раз редактировалось udaaff; 13.08.2015 в 19:33. |
|
|||||
|
Регистрация: Jul 2015
Сообщений: 73
|
я так понял Vx это и есть скорость, но не вижу в этом коде где это переменная определяется или изменяется что бы понять в чем дело, и для чего нужна переменная "t" ?
Добавлено через 35 секунд может вместо Vx ты хотел написать именно t |
|
|||||
|
[+1 26.12.11]
[+1 11.09.11] Регистрация: Feb 2011
Сообщений: 117
|
Да, Vx скорость, переменная t не нужна я удалил весь лишний код, чтобы максимально наглядно было, Vx постоянная
|
|
|||||
|
Регистрация: Dec 2014
Сообщений: 312
|
Проблема не с этим кодом, а в другом месте.
|
|
|||||
|
[+1 26.12.11]
[+1 11.09.11] Регистрация: Feb 2011
Сообщений: 117
|
ммм, да вроде напортачить тут сложно. Просто вызываем функцию перемещения через некоторое время и все. И если скорость сделаем 1.5 и 1 тогда 1 многоугольник побежит быстрее а вот если 0.5 и 1 то оба движутся одинаково.
|
|
|||||
|
Регистрация: Jul 2015
Сообщений: 73
|
так где ты указываешь скорость?
Добавлено через 1 минуту если Vx постоянная то получается для всех одна и та же скорость будет |
|
|||||
|
Регистрация: Dec 2014
Сообщений: 312
|
Упрощайте свой код пока не найдёте ошибку.
Вот работающий пример, может поможет. package { import flash.display.DisplayObject; import flash.display.Shape; import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { public function Main() { _shape1 = new Shape(); _shape2 = new Shape(); _shape1.graphics.beginFill(0); _shape1.graphics.drawRect(0, 0, 100, 100); _shape2.graphics.beginFill(0); _shape2.graphics.drawRect(0, 0, 100, 100); _shape2.y = 200; addChild(_shape1); addChild(_shape2); addEventListener(Event.ENTER_FRAME, enterFrame); } private function enterFrame(e:Event):void { Vx = 0.5; moveBody(_shape1); Vx = 1; moveBody(_shape2); } private function moveBody(object:DisplayObject):void { object.x += Vx; } private var _shape1:Shape; private var _shape2:Shape; private var Vx:Number; } } |
|
|||||
|
Регистрация: Jul 2015
Сообщений: 73
|
с этим кусочком кода сложно что либо сказать))
|
|
|||||
|
[+1 26.12.11]
[+1 11.09.11] Регистрация: Feb 2011
Сообщений: 117
|
мм сейчас буду рыться в своем коде. Решение отпишу если найду.
У меня 2 класса, в каждом хранятся свои скорости. Добавлено через 12 минут ошибка найдена ! т.к. у меня две функции вызываются, сначала сдвига а потом поворота.Я закомментил функцию поворота и все заработало как надо. Но теперь нужно подружить эти две функции вот функция поворота public function pointRotate(object:DisplayObject, center:Point, angle:Number) : void { /* * * * * * * * * * * * * @author wolsh * * * \* * * * * * * * * */ // return to zero angle += object.rotation; var a0:Number = - object.rotation * Math.PI / 180; var s0:Number = Math.sin(a0); var c0:Number = Math.cos(a0); var dX0:Number = object.x - center.x; var dY0:Number = object.y - center.y; object.rotation = 0; object.x = Math.round(center.x + dX0 * c0 - dY0 * s0); object.y = Math.round(center.y + dX0 * s0 + dY0 * c0); // new rotation var r:Number = angle * Math.PI / 180; var s:Number = Math.sin(r); var c:Number = Math.cos(r); var dX:Number = object.x - center.x; var dY:Number = object.y - center.y; object.rotation += angle; object.x = center.x + dX * c - dY * s; object.y = center.y + dX * s + dY * c; } поясню в чем суть проблемы. У нас 2 многоугольника ударяются друг об друга. Все замечательно, все обсчитывается правильно, но просто спрайт съзжает с вершин к которым прикреплен при малых скоростях. вот наглядно показывает это, подождите секунд 30 и увидите где вершины а где сам спрайт мне нужно чтобы спрайт вращался и перемещался адекватно. банально и просто, вращаться он может. Перемещаться тоже при малой скорости. А вот вместе повернуться и переместиться у него не получается нормально. Последний раз редактировалось udaaff; 13.08.2015 в 19:32. |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:58. |
|
|
« Предыдущая тема | Следующая тема » |
|
|