PDA

Просмотр полной версии : Стенки и углы. Как же правильнее делать?


Zik.
17.11.2008, 13:42
Первый вопрос.
Народ, как лучше делать стенки????

_root.onEnterFrame = function() {
if(ball.hitTest(leftWall)) {
ball._x -= speedBall
}
}

или же

_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 , ваша манера коверкать слова русского языка начинает действовать на нервы.

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

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

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



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;
}
}

orcpochta
22.11.2008, 13:50
забудь про углы - углов не существует
т.е. если у тебя есть грамотный обсчет столкновений со сторонами, то там, где ты подумаешь, что может быть угол, на самом деле будет поочередное столкновение со сторонами, т.к. в любом случае проверки осуществляются не параллельными потоками, а по какой-то очереди (хотя бы процессорного стека)