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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.11.2008, 13:42
Zik. вне форума Посмотреть профиль Отправить личное сообщение для Zik. Найти все сообщения от Zik.
  № 1  
Ответить с цитированием
Zik.
 
Аватар для Zik.

Регистрация: Nov 2007
Сообщений: 1,724
По умолчанию Стенки и углы. Как же правильнее делать?

Первый вопрос.
Народ, как лучше делать стенки????
Код AS1/AS2:
_root.onEnterFrame =  function() {
   if(ball.hitTest(leftWall)) {
          ball._x -= speedBall
   }
}
или же
Код AS1/AS2:
_root.onEnterFrame = function() {
  if(ball.hitTest(leftWall)) {
	setProperty(mc, _x, getProperty(mc, _x)-speedBall);
	}
}
Обычно я пользуюсь первым способом, но flazher советует SetProperty, так как получается без рывков.

Второй вопрос.
Как сделать угл???
Имеется ввиду что делать если шарик(например) сталкивается с углом.
Короче посмотрите исходник.

Спасибо
Вложения
Тип файла: rar shareg.rar (5.6 Кб, 56 просмотров)

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

Регистрация: Jul 2008
Адрес: Украина, Херсон
Сообщений: 635
Отправить сообщение для Division с помощью ICQ
Тут вроде написано: http://noregret.org/tutor/n/collision/

Выглядит так: http://noregret.org/tutor/n/collision/sample.html

PS hitTest не подходит
__________________
while(1) {}

Старый 17.11.2008, 13:56
Zik. вне форума Посмотреть профиль Отправить личное сообщение для Zik. Найти все сообщения от Zik.
  № 3  
Ответить с цитированием
Zik.
 
Аватар для Zik.

Регистрация: Nov 2007
Сообщений: 1,724
почему же не подходит?

P.S: не нашел нужного, тыкните пальцем плиз


Последний раз редактировалось Zik.; 17.11.2008 в 13:59.
Старый 17.11.2008, 15:19
Division вне форума Посмотреть профиль Отправить личное сообщение для Division Найти все сообщения от Division
  № 4  
Ответить с цитированием
Division
 
Аватар для Division

Регистрация: Jul 2008
Адрес: Украина, Херсон
Сообщений: 635
Отправить сообщение для Division с помощью ICQ
Цитата:
почему же не подходит?
Может я чего-то не знаю, но как с hitTest'ом ты найдёшь нормаль к поверхности с которой сталкиваешься?
Цитата:
P.S: не нашел нужного, тыкните пальцем плиз
Там пишут про определение столкновений. Тебе разве не это надо?
__________________
while(1) {}

Старый 17.11.2008, 15:24
Zik. вне форума Посмотреть профиль Отправить личное сообщение для Zik. Найти все сообщения от Zik.
  № 5  
Ответить с цитированием
Zik.
 
Аватар для Zik.

Регистрация: Nov 2007
Сообщений: 1,724
Как делать "определение столкновений" я знаю, мне интересно как исправить правильно угл.
И хотел бы знать что правильнее - первый или второй вариант стенок.

P.S: меня не раз посылают на эту очень заумную ссылку, а я слишком молод для таких вещей

Старый 17.11.2008, 15:33
Division вне форума Посмотреть профиль Отправить личное сообщение для Division Найти все сообщения от Division
  № 6  
Ответить с цитированием
Division
 
Аватар для Division

Регистрация: Jul 2008
Адрес: Украина, Херсон
Сообщений: 635
Отправить сообщение для Division с помощью ICQ
Цитата:
как исправить правильно угл.
А что такое "угл"? (:
как с хиттестом делать я не знаю, но в твоём простом случае, когда стенки только вертикальные и горизонтальные, можно смотреть на расстояние от этого угла до центра окружности. Если оно меньше радиуса, значит наехали на угол. ИМХО тот ещё изврат, может кто лучше подскажет.
__________________
while(1) {}

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

Регистрация: Nov 2007
Сообщений: 1,724
да не обязательно шарик, можно хоть квадрат, главное, чтобы была адекватная стенка, то есть угла (то есть, чтобы он нормально реагировал на столкновение).


Последний раз редактировалось Zik.; 17.11.2008 в 17:37.
Старый 17.11.2008, 17:19
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 8  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Цитата:
Сообщение от ZIK68
главное, чтобы была одекватная стенка, то есть угл. (то есть чтобы он нармально реагировал на столкновение)
ZIK68 , ваша манера коверкать слова русского языка начинает действовать на нервы.

Старый 17.11.2008, 17:37
Zik. вне форума Посмотреть профиль Отправить личное сообщение для Zik. Найти все сообщения от Zik.
  № 9  
Ответить с цитированием
Zik.
 
Аватар для Zik.

Регистрация: Nov 2007
Сообщений: 1,724
Извините Alexcon314. У меня врожденная не грамотность, хоть у меня мама и филолог .

P.S: исправил

Старый 21.11.2008, 22:42
Eric Gurt вне форума Посмотреть профиль Отправить личное сообщение для Eric Gurt Посетить домашнюю страницу Eric Gurt Найти все сообщения от Eric Gurt
  № 10  
Ответить с цитированием
Eric Gurt
 
Аватар для Eric Gurt

Регистрация: Oct 2006
Сообщений: 395
хиттестом физику лучше не делать. В твоем случае с комнатой подойдет такое решение:

Код AS1/AS2:
 
ball._x = 25; // стартовые координаты шарика
ball._y = 25;
 
ball._xspeed = 3; // Стартовая скорость вправо и вниз
ball._yspeed = 5;
 
_root.onEnterFrame =  function() 
{
      ball._x += ball._xspeed; // У мяча есть скорость, а значит он должен двигаться
      ball._y += ball._yspeed; // по направлению своей скорости
 
      ball._yspeed += 0.5 // Ибо на мяч действует сила тяжести
 
      // далее проверка пересечений и указание новой скорости для мяча
      if (ball._x < 10) // левая стенка
      {
            ball._x = 10;
            ball._xspeed = -ball._xspeed*0.7;
      }
      if (ball._x > 200) // правая стенка
      {
            ball._x = 200;
            ball._xspeed = -ball._xspeed*0.7;
      }
      if (ball._y > 400) // пол
      {
            ball._y = 400;
            ball._yspeed = -ball._yspeed*0.7;
      }
      if (ball._y < 20) // потолок
      {
            ball._y = 20;
            ball._yspeed = -ball._yspeed*0.7;
      }
}
__________________
.:Make it better:.
www.gevanni.com


Последний раз редактировалось Eric Gurt; 21.11.2008 в 22:45. Причина: Потому что планета кружится =)
Создать новую тему Ответ Часовой пояс GMT +4, время: 03:44.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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