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

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

Результаты опроса: Создаете ли вы игры на Flash
Да. Уже Научился 30 78.95%
Нет. 8 21.05%
Голосовавшие: 38. Вы ещё не голосовали в этом опросе

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.07.2010, 04:41
dkrstudio вне форума Посмотреть профиль Отправить личное сообщение для dkrstudio Найти все сообщения от dkrstudio
  № 21  
Ответить с цитированием
dkrstudio
[+1.3 20.07.10]

Регистрация: Jul 2010
Сообщений: 24
Код AS3:
//*****Переменные*****
var speed:Number = 0;
var maxSpeed:Number = 5
var gradus:Number = 0;
var G:Number = 3;
var radian:Number = (gradus * Math.PI)/180;
var speedX:Number = speed * Math.cos(radian);
var speedY:Number = speed * Math.sin(radian);
 
var a:Number = 0.4;//Ускорение
var friction:Number = 0.97;
 
//*****Переменные*****
 
//***Координаты***
MyCar_mc.x = 100;
MyCar_mc.y = 100;
//****Маркеры*****
var up:Boolean;
var down:Boolean;
var left:Boolean;
var right:Boolean;
//****Маркеры*****
addEventListener (Event.ENTER_FRAME, moveMyCar_mc);
function moveMyCar_mc (e:Event):void
{
 
if (up) {
		speed+=a&&speed<maxSpeed;
	}
	if (down) {
		speed-=a;
		//speed = -1;
	}
	if (left)
	{
		gradus = gradus - G;//MyCar_mc.x -= speed;//MyCar_mc.x = MyCar_mc.x - speed;//speedX -= a;
	}
 
	if (right)
	{
		gradus = gradus + G;//MyCar_mc.x += speed;//MyCar_mc.x = MyCar_mc.x + speed;//speedX -= a;
	}
	MyCar_mc.rotation = gradus;
 
 
	speedX = speedX * friction;
	speedY = speedY * friction;
 
	MyCar_mc.x = MyCar_mc.x + speedX;
	MyCar_mc.y = MyCar_mc.y + speedY;
	//****Условия*******
}
 
//***********************Клавиша нажата******************
stage.addEventListener (KeyboardEvent.KEY_DOWN, key_down);
function key_down (e:KeyboardEvent):void
{
	//****Условия*******
	if (e.keyCode == 38)
	{
		up = true;
	}
 
	if (e.keyCode == 40)
	{
		down = true;
	}
 
	if (e.keyCode == 37)
	{
		left = true;
	}
 
	if (e.keyCode == 39)
	{
		right = true;
	}
	//****Условия*******
}
//***********************Клавиша отпущена****************
//***********************Клавиша нажата******************
stage.addEventListener (KeyboardEvent.KEY_UP, key_up);
function key_up (e:KeyboardEvent):void
{
	//****Условия*******
	if (e.keyCode == 38)
	{
		up = false;
	}
 
	if (e.keyCode == 40)
	{
		down = false;
	}
 
	if (e.keyCode == 37)
	{
		left = false;
	}
 
	if (e.keyCode == 39)
	{
		right = false;
	}
	//****Условия*******
}
//***********************Клавиша отпущена****************
Вот код. работает только влево или вправо. поворачивается тоесть.

Код AS3:
//*****Переменные*****
var speed:Number = 0;
var gradus:Number = 0;
var G:Number = 3;
var radian:Number = (gradus * Math.PI)/180;
var speedX:Number = speed * Math.cos(radian);
var speedY:Number = speed * Math.sin(radian);
 
var a:Number = 0.4;//Ускорение
var friction:Number = 0.97;
 
//*****Переменные*****
 
//***Координаты***
MyCar_mc.x = 100;
MyCar_mc.y = 100;
//****Маркеры*****
var up:Boolean;
var down:Boolean;
var left:Boolean;
var right:Boolean;
//****Маркеры*****
addEventListener (Event.ENTER_FRAME, moveMyCar_mc);
function moveMyCar_mc (e:Event):void
{
 
	if (up)
	{
		speedY = speedY - a;//MyCar_mc.y -= speed;//MyCar_mc.y = MyCar_mc.y - speed; //speedY -= a;
	}
 
	if (down)
	{
		speedY = speedY + a;//MyCar_mc.y += speed;//MyCar_mc.y = MyCar_mc.y + speed;//speedY += a;
	}
 
	if (left)
	{
		gradus = gradus - G;//MyCar_mc.x -= speed;//MyCar_mc.x = MyCar_mc.x - speed;//speedX -= a;
	}
 
	if (right)
	{
		gradus = gradus + G;//MyCar_mc.x += speed;//MyCar_mc.x = MyCar_mc.x + speed;//speedX -= a;
	}
	MyCar_mc.rotation = gradus;
 
 
	speedX = speedX * friction;
	speedY = speedY * friction;
 
	MyCar_mc.x = MyCar_mc.x + speedX;
	MyCar_mc.y = MyCar_mc.y + speedY;
	//****Условия*******
}
 
//***********************Клавиша нажата******************
stage.addEventListener (KeyboardEvent.KEY_DOWN, key_down);
function key_down (e:KeyboardEvent):void
{
	//****Условия*******
	if (e.keyCode == 38)
	{
		up = true;
	}
 
	if (e.keyCode == 40)
	{
		down = true;
	}
 
	if (e.keyCode == 37)
	{
		left = true;
	}
 
	if (e.keyCode == 39)
	{
		right = true;
	}
	//****Условия*******
}
//***********************Клавиша отпущена****************
//***********************Клавиша нажата******************
stage.addEventListener (KeyboardEvent.KEY_UP, key_up);
function key_up (e:KeyboardEvent):void
{
	//****Условия*******
	if (e.keyCode == 38)
	{
		up = false;
	}
 
	if (e.keyCode == 40)
	{
		down = false;
	}
 
	if (e.keyCode == 37)
	{
		left = false;
	}
 
	if (e.keyCode == 39)
	{
		right = false;
	}
	//****Условия*******
}
//***********************Клавиша отпущена****************
А вот код Изменено тока два условия и машинка поворачивается только в прав и влево и движдется вверх или вниз! так как зделать так чтобыона двигалась по направлению движения. я веть уже разложил главный вектор скорости по speedX и SpeedY?????????????????????
__________________
Ну что с этим делать


Последний раз редактировалось iNils; 27.07.2010 в 12:22.
Старый 27.07.2010, 10:17
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 22  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
dkrstudio, оформите код тегами [code][/code]. Или просто уберите лишнее, непонятно ничего.


Последний раз редактировалось alexcon314; 27.07.2010 в 12:21.
Старый 27.07.2010, 11:04
ChP вне форума Посмотреть профиль Отправить личное сообщение для ChP Найти все сообщения от ChP
  № 23  
Ответить с цитированием
ChP

Регистрация: Dec 2008
Адрес: Новосибирск
Сообщений: 30
Может поможет в освоении такая информация. Есть неплохой блог http://xitri.com/. Там есть множество примеров эффектов анимации и использование в анимации actionscript. Там же пример игры-парковки с исходниками и с описанием формул расчета, правда на as2. Думаю поможет в освоении игровой физики

Старый 27.07.2010, 11:50
Tr1te вне форума Посмотреть профиль Отправить личное сообщение для Tr1te Найти все сообщения от Tr1te
  № 24  
Ответить с цитированием
Tr1te
 
Аватар для Tr1te

Регистрация: Jun 2009
Сообщений: 461
dkrstudio, на сколько мне видится, у тебя две проблемы. Это то что ты не знаешь что надо писать, и не знаешь как надо писать.

Давай по порядку. Если пишешь программу то тебе надо в голове понимать ее алгоритм, если ты этого не понимаешь то очень сложно помоч, по этому сначала надо разобраться.

Понимаешь ли ты как должна рассчитываться физика? (По каким законом машина движеться) Поступал ли ты в тех ВУЗ? Просто при поступлении в тех ВУЗ, половина задач именно на динамику.

Еще вопрос, сам ли ты писал тот код который ты сюда вставляешь?

Понимаешь ли ты этот код?

Старый 27.07.2010, 12:13
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 25  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Да вопрос понять невозможно. Соответственно и ответить. Ну а если на человеческом проблемы с языком (ладно там грамматика, хотя я бы стрелял), то что говорить о as3?
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 27.07.2010, 13:12
hartman вне форума Посмотреть профиль Отправить личное сообщение для hartman Найти все сообщения от hartman
  № 26  
Ответить с цитированием
hartman

Регистрация: Jul 2010
Сообщений: 110
Цитата:
Сообщение от dkrstudio Посмотреть сообщение
я веть уже разложил главный вектор скорости по speedX и SpeedY?????????????????????
Короткий ответ - да, более длинный - нет.
Если вы не понимаете что написано у вас в коде, ничего не будет ездить как надо, разве что случайно)
Что по вашему значит "разложить скорость", проекция вектора на направление? x = v*cos(a), y = v*sin(a), где v - скорость, a - ее угол с осью х.

Старый 27.07.2010, 13:34
dkrstudio вне форума Посмотреть профиль Отправить личное сообщение для dkrstudio Найти все сообщения от dkrstudio
  № 27  
Ответить с цитированием
dkrstudio
[+1.3 20.07.10]

Регистрация: Jul 2010
Сообщений: 24
Почему не видно мой аватар. *ну что тут я могу поделать*.
Вобщем код который изначально не мой. я его просто сразу разобрал и быстро понял почему так. потом пошло поехало. Теперь я снова в нем разобрался. Спасибо всем. и не пугайте так новичков. тема движения и физики весьма сложная. Думаю пора хаканчивать этот топик. тему форума. Если кто в дальнейшем будет читать этот топик или как правильно я не знаю. Смортите на синтаксис и на названия переменных. и не пугайтесь! если в продолжение По названию темы будет вопрос про соприкосновения с другими обьетками на сцене то в as3 есть пару методов все на условиях if else. вобщем это основы. Учитесь создовать классы но прежде тестируйте все функции *если можно отнести движение к ним* отдельно и соединяйте готовые СВОИ сто раз разобранные и понятные коды
Всем спасибо.
__________________
Ну что с этим делать

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

Теги
hittestobject , объекты на сцене

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

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


 


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


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