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

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

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

Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
Question Остановка героя при столкновение со стенами

Здравствуйте!
Вот пишу игру и с самого начала возникли проблемы:есть герой который двигается по полю с видом сверху, есть стены, при столкновении с которыми герой почему-то улетает в левый верхний угол сцены, хотя должен просто остановиться. Далее привожу код, box-герой, box1-box4- стены, вот код:


Код AS3:
//задаем переменные обозначающие скорость
var speedX:Number;
var speedY:Number;
 
//проверка столкновений задание значения скоростям
stage.addEventListener(Event.ENTER_FRAME, stolknovenie);
function stolknovenie (e:Event):void {
	if (box.hitTestObject(box4) || box.hitTestObject(box1)) {
		speedY == 0;
	}else{
		speedY == 3;
	}
}
 
 
stage.addEventListener(Event.ENTER_FRAME, stolknovenie2);
function stolknovenie2 (e:Event):void {
	if (box.hitTestObject(box2) || box.hitTestObject(box3)) {
		speedХ == 0;
	}else{
		speedX == 3;
	}
}
 
 
//собственно движение героя
box.stop();
stage.addEventListener(KeyboardEvent.KEY_DOWN, moveF);
 function moveF (e:KeyboardEvent):void {
	 if (e.keyCode == Keyboard.UP) {
		 box.y -= speedY;
	     box.gotoAndStop(4);
	 }else if (e.keyCode == Keyboard.DOWN) {
		 box.y += speedY;
		 box.gotoAndStop(2);
	 }else if (e.keyCode == Keyboard.LEFT) {
		 box.x -= speedX;
		 box.gotoAndStop(3);
	 }else if (e.keyCode ==Keyboard.RIGHT) {
		 box.x += speedX;
		 box.gotoAndStop(1);
	 }
 }
Буду очень благодарен за помощь


Последний раз редактировалось reNiks; 02.12.2010 в 12:54.
Старый 02.12.2010, 12:52
leofit вне форума Посмотреть профиль Отправить личное сообщение для leofit Найти все сообщения от leofit
  № 2  
Ответить с цитированием
leofit
 
Аватар для leofit

Регистрация: Dec 2009
Сообщений: 428
А в чем вопрос?
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг

Старый 02.12.2010, 13:31
Alex_YAROST_22 вне форума Посмотреть профиль Отправить личное сообщение для Alex_YAROST_22 Найти все сообщения от Alex_YAROST_22
  № 3  
Ответить с цитированием
Alex_YAROST_22
[+1.3 18.03.10]

Регистрация: Mar 2010
Сообщений: 45
Архитектура настолько чудовищная, что становится дурно. А если объектов будет не 4 а 40?

Ну и, молодой человек, у вас вместо присваивания используется оператор сравнения

Добавлено через 1 минуту
мало того, столкновение надо проверять ДО ТОГО как произошло перемещение героя, а не после. иначе герой застрянет в стене или будет в ней как минимум "тонуть"

P.S.: писать наименование темы заглавными буквами запрещено правилами.

Старый 02.12.2010, 15:07
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 4  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
Нужно не
Код AS3:
speedY == 0;
а
Код AS3:
speedY = 0;
И замечания из предыдущего поста.
__________________
trace("Остановите Землю, я сойду!!!");

Старый 02.12.2010, 15:51
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 5  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Это — брат-близнец Sestem'a?

Старый 02.12.2010, 17:04
reNiks вне форума Посмотреть профиль Отправить личное сообщение для reNiks Найти все сообщения от reNiks
  № 6  
Ответить с цитированием
reNiks

Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
Цитата:
Сообщение от Alex_YAROST_22 Посмотреть сообщение
Архитектура настолько чудовищная, что становится дурно. А если объектов будет не 4 а 40?

Ну и, молодой человек, у вас вместо присваивания используется оператор сравнения

Добавлено через 1 минуту
мало того, столкновение надо проверять ДО ТОГО как произошло перемещение героя, а не после. иначе герой застрянет в стене или будет в ней как минимум "тонуть"

P.S.: писать наименование темы заглавными буквами запрещено правилами.
Извините я еще совсем новичок в этом деле. Что вы можете предложить по поводу архитектуры? Я смотрел по этой теме ничего дельного не нашел. А как использовать оператор присваивания вместо сравнения? И еще я совсем не понял по поводу проверки до столкновения: вроде же функции столкновения находятся перед функциями движения?

Старый 02.12.2010, 17:40
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 7  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Mur4ik же ответил про разницу = и == .

И если какая-то из стенок неподвижна, то проще ограничить персонажа по (x, y), чем проверять на столкновения.

Старый 02.12.2010, 17:55
reNiks вне форума Посмотреть профиль Отправить личное сообщение для reNiks Найти все сообщения от reNiks
  № 8  
Ответить с цитированием
reNiks

Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
спасибо про присвоение понял. ну а по поводу остальных вопросов?

Старый 02.12.2010, 18:10
Aber вне форума Посмотреть профиль Отправить личное сообщение для Aber Найти все сообщения от Aber
  № 9  
Ответить с цитированием
Aber
 
Аватар для Aber

Регистрация: Dec 2010
Адрес: Воронеж
Сообщений: 26
Отправить сообщение для Aber с помощью ICQ
Цитата:
Извините я еще совсем новичок в этом деле. Что вы можете предложить по поводу архитектуры? Я смотрел по этой теме ничего дельного не нашел. А как использовать оператор присваивания вместо сравнения? И еще я совсем не понял по поводу проверки до столкновения: вроде же функции столкновения находятся перед функциями движения?
По этой теме много есть статей и исходников.
В твоём случае советую присмотреться к Тайловой структуре.
Создаешь сначала массив, который забиваешь числами. Например 1-земля, 2-препятствие, и так далее. Уже по этому массиву расставляешь объекты.

В общем поищи в интернете, не помню на каком сайте, но было много написано про создание игр. И в частности про твой случай.

Старый 02.12.2010, 19:44
reNiks вне форума Посмотреть профиль Отправить личное сообщение для reNiks Найти все сообщения от reNiks
  № 10  
Ответить с цитированием
reNiks

Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
Тэээкс. Покапал я в нете: не густо про тайлы есть, хотя может руки кривые. Может кто кинуть ссылок про написание игр с помощью тайлов, желательней разумеется на русском.

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

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

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


 


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


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