Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.06.2011, 18:27
addertu вне форума Посмотреть профиль Отправить личное сообщение для addertu Найти все сообщения от addertu
  № 1  
Ответить с цитированием
addertu

Регистрация: Jun 2011
Сообщений: 23
По умолчанию Герой идет в ту сторону в которую он смотрит

Здравствуйте. Делаю игрушку. Вид сверху. нажимаю и держу клавишу влево или вправо и герой медленно поворачивается влево или в право, когда отпускаю клавишу герой остается повернутым. Вопрос, как теперь сделать так чтоб при нажатии клавиши вперед герой шел именно в ту сторону в которую он повернут? Может надо использовать синус и косинус? Как заставить его туда идти в actionscript2?

Старый 19.06.2011, 16:19
warsem вне форума Посмотреть профиль Отправить личное сообщение для warsem Найти все сообщения от warsem
  № 2  
Ответить с цитированием
warsem
 
Аватар для warsem

Регистрация: May 2011
Сообщений: 72
а в чем сложность заключаетца? у вас есть угол поворота. Просто строите треугольник с этим углом и находите X и Y. Дальше меняете координаты героя на эти X и Y.
Хороший чертеж на бумаге вам поможет всё понять.

Старый 19.06.2011, 19:36
addertu вне форума Посмотреть профиль Отправить личное сообщение для addertu Найти все сообщения от addertu
  № 3  
Ответить с цитированием
addertu

Регистрация: Jun 2011
Сообщений: 23
По умолчанию мда...

Цитата:
Сообщение от warsem Посмотреть сообщение
а в чем сложность заключаетца? у вас есть угол поворота. Просто строите треугольник с этим углом и находите X и Y. Дальше меняете координаты героя на эти X и Y.
Хороший чертеж на бумаге вам поможет всё понять.
Ничего не понял. Я написал код. в нем обект двигается какрас так как мне надо но он не поворачивается лицом в ту сторону в которую двигается. как его заставить это делать? Вот код:

Код AS1/AS2:
onClipEvent(load) { 
var povorot=0;
var go=0;
var obj1x=_root.obj1._x;
var obj1y=_root.obj1._y;
}
 
onClipEvent(enterFrame) { 
 
_root.povVLevo.onRelease = function() {
povorot-=0.3;
}
 
_root.povVPravo.onRelease = function() {
povorot+=0.3;
}
 
_root.vpered.onRelease = function() {
go+=1;
}
 
_root.nazad.onRelease = function() {
go-=1;
}
 
var angle:Number=povorot;//задать значение
var distance:Number=go;//задать значение
var dirx:Number=Math.cos(angle);
var diry:Number=Math.sin(angle);
obj1x+=distance*dirx;
obj1y+=distance*diry;
 
_root.obj1._x=obj1x;
_root.obj1._y=obj1y;
//_root.obj1._rotation=povorot;
 
}


Последний раз редактировалось iNils; 20.06.2011 в 12:05.
Старый 20.06.2011, 13:58
arisman вне форума Посмотреть профиль Отправить личное сообщение для arisman Найти все сообщения от arisman
  № 4  
Ответить с цитированием
arisman

Регистрация: Jun 2011
Сообщений: 5
_root.obj1._rotation= povorot ...

А там радианы в градусы переведены?

Я не очень силён в математики, школьную программу не помню, но в моём случае это было
180 / Math.PI * Math.acos(радианы) .
только там были отдельные проблемы, возможно из за неверной формулы с местами, где поворот от 90 до 180 и 270 - 360 ... Всё решил ...

Старый 22.06.2011, 09:51
addertu вне форума Посмотреть профиль Отправить личное сообщение для addertu Найти все сообщения от addertu
  № 5  
Ответить с цитированием
addertu

Регистрация: Jun 2011
Сообщений: 23
Цитата:
Сообщение от arisman Посмотреть сообщение
_root.obj1._rotation= povorot ...

А там радианы в градусы переведены?

Я не очень силён в математики, школьную программу не помню, но в моём случае это было
180 / Math.PI * Math.acos(радианы) .
только там были отдельные проблемы, возможно из за неверной формулы с местами, где поворот от 90 до 180 и 270 - 360 ... Всё решил ...
Я не совсем понял твой ответ. куда вписывать строку 180 / Math.PI * Math.acos(радианы)? Можешь исправить вылаженный мной код так чтоб все заработало и объект смотрел в сторону поворота?

Я поставил в самом конце строку _root.obj1._rotation=povorot; но объект почемуто вертится на меньшее значение чем поворачивается.


Последний раз редактировалось addertu; 22.06.2011 в 09:54.
Старый 22.06.2011, 14:36
arisman вне форума Посмотреть профиль Отправить личное сообщение для arisman Найти все сообщения от arisman
  № 6  
Ответить с цитированием
arisman

Регистрация: Jun 2011
Сообщений: 5
Извини, не могу проверить. Попробуй след.

_root.obj1._rotation = ( 180 / Math.PI ) * Math.acos(povorot);

У меня возникли небольшие проблемы в 2 и 3-ем квадранте (просто на некоторых участках поворот был немного другой) ... Но у меня скорее всего было не из за формулы, да и проблема уже решается механически.

Старый 22.06.2011, 15:19
addertu вне форума Посмотреть профиль Отправить личное сообщение для addertu Найти все сообщения от addertu
  № 7  
Ответить с цитированием
addertu

Регистрация: Jun 2011
Сообщений: 23
По умолчанию Не корректно работает.

Цитата:
Сообщение от arisman Посмотреть сообщение
Извини, не могу проверить. Попробуй след.

_root.obj1._rotation = ( 180 / Math.PI ) * Math.acos(povorot);

У меня возникли небольшие проблемы в 2 и 3-ем квадранте (просто на некоторых участках поворот был немного другой) ... Но у меня скорее всего было не из за формулы, да и проблема уже решается механически.
У меня это почемуто не корректно работает. После определенного угла перестает поворачиваться. А как ты думаешь вот этот вариант точно вычесляет нужный угол: _root.obj1._rotation=povorot*180/Math.PI;?

Старый 22.06.2011, 15:53
arisman вне форума Посмотреть профиль Отправить личное сообщение для arisman Найти все сообщения от arisman
  № 8  
Ответить с цитированием
arisman

Регистрация: Jun 2011
Сообщений: 5
эта формула
( 180 / Math.PI ) * Math.acos(povorot);

перевод из радиан в градусы.

Параметрами тригонометрических функций (cos sin тангенс котангенс и арк косинус, ....) в AS являются радианы ... поэтому povorot - это у тебя не градусы, а радианы...

У меня была проблема я искал угол между двумя векторами ... Я её решил условиями
Если в таком то квадранте, то
180 - поворот; ( то есть ( 180 / Math.PI ) * Math.acos(povorot)
если в таких то квадрантах, то -1 * поворот (( 180 / Math.PI ) * Math.acos(povorot)

До конца я сам не понял почему не работают некоторые квадранты, то есть что то понятно сразу стало, а что то до сих пор не могу понять .... Просто подгонял ... И подгонял только 2мя операциями
либо 180 - поворото, либо -1 * поворот.

Добавлено через 5 минут
public static acos(x:Number) : Number

Computes and returns the arc cosine of the number specified in the parameter x, in radians.

Availability: ActionScript 1.0; Flash Player 5 - In Flash Player 4, the methods and properties of the Math class are emulated using approximations and might not be as accurate as the non-emulated math functions that Flash Player 5 supports.

Parameters
x:Number - A number from -1.0 to 1.0.


ты как нибудь учитываешь, промежуток от -1 до 1 ... как я понял в твоем коде просто прибавляется (+0,3)

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:58.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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