Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   рэндомные направления движения объекта (http://www.flasher.ru/forum/showthread.php?t=143707)

Dr_Bra 23.08.2010 19:03

рэндомные направления движения объекта
 
Вложений: 1
Подскажите, как можно по событию генерировать новое направление движения объекта, который находится внутри этого круга?
Нужно, что бы объект произвольно выбирал себе направление (к примеру красные точки – это его, как бы цель, и она должна генерироваться всегда поразомну)

Psycho Tiger 23.08.2010 19:14

Ну, 2 точки есть, значит между ними можно проделать кривую. Составляем систему уравнений: первое уравнение t = 0, позиция = 0, второе - t=(путь)/(скорость), позиция = конечная и добавляем туда всякой ерунды, лишь бы система не потеряла своей силы.

Jewelz 23.08.2010 19:57

чую аквариум)

Dr_Bra 23.08.2010 20:00

да никак не получается с ним совладать, гг

Добавлено через 46 минут
Поправьте, пожалуйста, опечатку в теме =)

Zik. 23.08.2010 21:07

Как вариант (без точек), можно клипу идти от его угла, а угол задавать случайно.
То есть
Код AS3:

const PI:Number = Math.PI;
var speed:Number = 5;
//....
angle = clip.rotation * PI / 180;
xMove = speed * Math.cos(angle);
yMove = speed * Math.sin(angle);
clip.x += xMove;
clip.y += yMove;

Но так как это аквариум, тут поворот угла ни к чему и вместо rotation нужно завесьти переменную и рандомить ее

silin 23.08.2010 22:40

//координаты объекта: objX, objY
//рандомный угол a = 2 * Math.random() * Math.PI;
//рандомная точка на окружности (R * Math.cos(a), R * Math.sin(a))
//направление на эту точку fi=Math.atan2(r * Math.sin(a) - objY, R * Math.cos(a) - objX);
//скорости speed*Math.cos(fi) и speed*Math.sin(fi)

Dr_Bra 24.08.2010 13:02

Цитата:

Сообщение от ZIK68 (Сообщение 930925)
Как вариант (без точек), можно клипу идти от его угла, а угол задавать случайно.
То есть
Код AS3:

const PI:Number = Math.PI;
var speed:Number = 5;
//....
angle = clip.rotation * PI / 180;
xMove = speed * Math.cos(angle);
yMove = speed * Math.sin(angle);
clip.x += xMove;
clip.y += yMove;

Но так как это аквариум, тут поворот угла ни к чему и вместо rotation нужно завесьти переменную и рандомить ее

Тогда нужно завести еще одну переменную clipRotation и ее генерировать рэндомно от 0 до 360?

Добавлено через 43 минуты
Большое спасибо за помощь!

Zik. 24.08.2010 14:25

Цитата:

Сообщение от Dr_Bra (Сообщение 931006)
Тогда нужно завести еще одну переменную clipRotation и ее генерировать рэндомно от 0 до 360?

По сути да

Psycho Tiger 24.08.2010 14:34

ZIK, а зачем ты PI вынес в константу? )

Bgg 24.08.2010 15:02

Цитата:

Сообщение от Psycho Tiger (Сообщение 931035)
ZIK, а зачем ты PI вынес в константу? )

гыыгыы. Быстрее писать.


Часовой пояс GMT +4, время: 02:12.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.