Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Стенки и углы. Как же правильнее делать? (http://www.flasher.ru/forum/showthread.php?t=118181)

Zik. 17.11.2008 13:42

Стенки и углы. Как же правильнее делать?
 
Вложений: 1
Первый вопрос.
Народ, как лучше делать стенки????
Код 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, так как получается без рывков.

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

Спасибо

Division 17.11.2008 13:51

Тут вроде написано: http://noregret.org/tutor/n/collision/

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

PS hitTest не подходит

Zik. 17.11.2008 13:56

почему же не подходит?

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

Division 17.11.2008 15:19

Цитата:

почему же не подходит?
Может я чего-то не знаю, но как с hitTest'ом ты найдёшь нормаль к поверхности с которой сталкиваешься?
Цитата:

P.S: не нашел нужного, тыкните пальцем плиз
Там пишут про определение столкновений. Тебе разве не это надо?

Zik. 17.11.2008 15:24

Как делать "определение столкновений" я знаю, мне интересно как исправить правильно угл.
И хотел бы знать что правильнее - первый или второй вариант стенок.

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

Division 17.11.2008 15:33

Цитата:

как исправить правильно угл.
А что такое "угл"? (:
как с хиттестом делать я не знаю, но в твоём простом случае, когда стенки только вертикальные и горизонтальные, можно смотреть на расстояние от этого угла до центра окружности. Если оно меньше радиуса, значит наехали на угол. ИМХО тот ещё изврат, может кто лучше подскажет.

Zik. 17.11.2008 16:17

да не обязательно шарик, можно хоть квадрат, главное, чтобы была адекватная стенка, то есть угла (то есть, чтобы он нормально реагировал на столкновение).

alexcon314 17.11.2008 17:19

Цитата:

Сообщение от ZIK68
главное, чтобы была одекватная стенка, то есть угл. (то есть чтобы он нармально реагировал на столкновение)

ZIK68 , ваша манера коверкать слова русского языка начинает действовать на нервы.

Zik. 17.11.2008 17:37

Извините Alexcon314. У меня врожденная не грамотность, хоть у меня мама и филолог :( .

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

Eric Gurt 21.11.2008 22:42

хиттестом физику лучше не делать. В твоем случае с комнатой подойдет такое решение:

Код 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;
      }
}



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

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