Просмотр полной версии : Стенки и углы. Как же правильнее делать?
Первый вопрос.
Народ, как лучше делать стенки????
_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 не подходит
почему же не подходит?
P.S: не нашел нужного, тыкните пальцем плиз
Division
17.11.2008, 15:19
почему же не подходит?
Может я чего-то не знаю, но как с hitTest'ом ты найдёшь нормаль к поверхности с которой сталкиваешься?
P.S: не нашел нужного, тыкните пальцем плиз
Там пишут про определение столкновений. Тебе разве не это надо?
Как делать "определение столкновений" я знаю, мне интересно как исправить правильно угл.
И хотел бы знать что правильнее - первый или второй вариант стенок.
P.S: меня не раз посылают на эту очень заумную ссылку, а я слишком молод для таких вещей :(
Division
17.11.2008, 15:33
как исправить правильно угл.
А что такое "угл"? (:
как с хиттестом делать я не знаю, но в твоём простом случае, когда стенки только вертикальные и горизонтальные, можно смотреть на расстояние от этого угла до центра окружности. Если оно меньше радиуса, значит наехали на угол. ИМХО тот ещё изврат, может кто лучше подскажет.
да не обязательно шарик, можно хоть квадрат, главное, чтобы была адекватная стенка, то есть угла (то есть, чтобы он нормально реагировал на столкновение).
alexcon314
17.11.2008, 17:19
главное, чтобы была одекватная стенка, то есть угл. (то есть чтобы он нармально реагировал на столкновение)
ZIK68 , ваша манера коверкать слова русского языка начинает действовать на нервы.
Извините 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
забудь про углы - углов не существует
т.е. если у тебя есть грамотный обсчет столкновений со сторонами, то там, где ты подумаешь, что может быть угол, на самом деле будет поочередное столкновение со сторонами, т.к. в любом случае проверки осуществляются не параллельными потоками, а по какой-то очереди (хотя бы процессорного стека)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.