![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1
|
|
![]() Весёлый персонаж ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 891 Регистрация: 12.03.2008 Пользователь №: 4145 ![]() |
Хочу сделать игру "Прыжки на батуте"
Ну вообщем два мувиклипа: 1. Чувак который прыгает. 2. Сам Батут. Как с помощью HitTest расщитать отскоки, гравитацию и т. д. P.S. Не умею вводить параметры.... На сколько мне известно надо через _global.... Но как? Можно по конкретней... Заранее спасибо |
|
|
![]()
Сообщение
#2
|
|
![]() Весёлый персонаж ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 891 Регистрация: 12.03.2008 Пользователь №: 4145 ![]() |
Чё никто не знает как это сделать?
Мне просто нужно помочь с HitTest... P.S. MustLive, хотя бы ты помоги.... |
|
|
![]()
Сообщение
#3
|
|
![]() Участник ![]() ![]() Группа: Пользователь Сообщений: 123 Регистрация: 4.11.2006 Пользователь №: 1288 ![]() |
Цитата Мне просто нужно помочь с HitTest... проверка hitTest проходит следующим образом: if(клип1.hitTest(клип2)){ действие } клип1,2- мувиклипы, которые проверяются на "пересечение"/совпадение |
|
|
![]()
Сообщение
#4
|
|
![]() Участник ![]() ![]() Группа: Пользователь Сообщений: 123 Регистрация: 4.11.2006 Пользователь №: 1288 ![]() |
Ставим на кадр и радуемся
![]() Код var V:Number = 0;//скорость
var g:Number = 1;//ускорение this.createEmptyMovieClip("jumper",0); jumper._x = 200; jumper.lineStyle(1,0x000000); jumper.moveTo(0,0); jumper.lineTo(0,10); jumper.lineTo(10,10); jumper.lineTo(10,0); jumper.lineTo(0,0); this.createEmptyMovieClip("trampoline",1); trampoline._x = 200; trampoline._y = 300; trampoline.lineStyle(1,0x000000); trampoline.moveTo(0,0); trampoline.lineTo(0,50); trampoline.lineTo(50,50); trampoline.lineTo(50,0); trampoline.lineTo(0,0); this.onEnterFrame = function() { jumper._y += V; V += g; if (jumper.hitTest(trampoline)) { V = -V+2*g; if (V>0) { V = 0; } } }; |
|
|
![]()
Сообщение
#5
|
|
Ветеран конференции ![]() ![]() ![]() ![]() Группа: Flash Zone Team Сообщений: 3946 Регистрация: 10.03.2005 Из: Киев Пользователь №: 5 ![]() |
Цитата Чё никто не знает как это сделать? Естественно есть люди которые знают, просто они ранее не добрались до этой темы. Вот /2D/ уже как раз ответил. Цитата Мне просто нужно помочь с HitTest... Данная тема уже не раз обсуждалась на форуме. К тому же в хелпе можно прочесть об использовании HitTest. Посмотри пример /2D/. Цитата MustLive, хотя бы ты помоги.... Помогу как только доберусь до твоей темы. А у меня с каждой новой темой на форуме добавляется новая запись в список тем на которые нужно ответить (и который растёт из года в год), и ссылка на твою тему опускается все ниже. Так что нужно лишь дождаться. P.S. Вот вам ребята новая версия кода. С добавленным управлением прыгуном (стрелками влево и вправо). Ставьте в кадр и радуйтесь ещё больше ![]() CODE var V:Number = 0; //скорость
var g:Number = 1; //ускорение this.createEmptyMovieClip("jumper",0); jumper._x = 200; jumper.lineStyle(1,0x000000); jumper.moveTo(0,0); jumper.lineTo(0,10); jumper.lineTo(10,10); jumper.lineTo(10,0); jumper.lineTo(0,0); this.createEmptyMovieClip("trampoline",1); trampoline._x = 200; trampoline._y = 300; trampoline.lineStyle(1,0x000000); trampoline.moveTo(0,0); trampoline.lineTo(0,50); trampoline.lineTo(50,50); trampoline.lineTo(50,0); trampoline.lineTo(0,0); this.onEnterFrame = function() { jumper._y += V; V += g; if (jumper.hitTest(trampoline)) { V = -V+2*g; if (V>0) { V = 0; } } }; var KbListener:Object = new Object(); KbListener.onKeyDown = function() { switch (Key.getCode()) { case 37: jumper._x -= 2; break; case 39: jumper._x += 2; break; } } Key.addListener(KbListener); |
|
|
![]()
Сообщение
#6
|
|
![]() Весёлый персонаж ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 891 Регистрация: 12.03.2008 Пользователь №: 4145 ![]() |
/2D/, MustLive спасибо за ответы.
Цитата Помогу как только доберусь до твоей темы. А у меня с каждой новой темой на форуме добавляется новая запись в список тем на которые нужно ответить (и который растёт из года в год), и ссылка на твою тему опускается все ниже. Так что нужно лишь дождаться. ладна. Буду знать. ![]() Сообщение отредактировал HaWK - 3.02.2009 - 13:22 |
|
|
![]()
Сообщение
#7
|
|
![]() Весёлый персонаж ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 891 Регистрация: 12.03.2008 Пользователь №: 4145 ![]() |
Мне нужно ещё им управлять:
- Вертеть его (по часовой, против часовой) - Чтоб можно было взлететь выше (кнопка прыжка) - Менять позы А также: - Отображать очки за разные трюки - И чтобы он был в воздухе бесконечно (т. е. замкнутый круг - прыгает и приземляется) просто в вашем примере он по тихонечку всё меньше и меньше отталкивается, а потом и вообще просто стоит на батуте) Пожалуйста помогите! ![]() ![]() ![]() P.S. Я подожду ![]() Сообщение отредактировал HaWK - 3.02.2009 - 14:44 |
|
|
![]()
Сообщение
#8
|
|
![]() Участник ![]() ![]() Группа: Пользователь Сообщений: 123 Регистрация: 4.11.2006 Пользователь №: 1288 ![]() |
Цитата Я с физикой во флэше не очень! dry.gif HaWK, физику во флэше нужно придумывать самому, если лень что-то придумывать, можно использовать известные науке физические формулы,чтобы получилось всё более реалестично, но для меня легче придумать что-то самому чем насиживать геморой и вспоминать "школьную физику". ![]() Вобщем вот тебе код , тут на клавиши "вверх"/"вниз" можно поворачивать прыгающий объект, а если нажимать "пробел" в момент соприкосновения с батутом объект будет "распрыгиваться". Код var V:Number = 0;//скорость вертикальная
var Vd:Number = 0;//скорость горизонтальная var g:Number = 1;//ускорение var W:Number = Stage.width; var H:Number = Stage.height; this.createEmptyMovieClip("jumper",0); jumper._x = W/2; jumper.lineStyle(1,0x000000); jumper.moveTo(0,0); jumper.lineTo(0,10); jumper.lineTo(10,10); jumper.lineTo(10,0); jumper.lineTo(0,0); this.createEmptyMovieClip("trampoline",1); trampoline.lineStyle(1,0x000000); trampoline.moveTo(0,0); trampoline.lineTo(0,50); trampoline.lineTo(W,50); trampoline.lineTo(W,0); trampoline.lineTo(0,0); trampoline._y = H-trampoline._height; this.onEnterFrame = function() { if (jumper._y>H) { jumper._x = W/2; jumper._y = 0; jumper._rotation = 0; V = 0; Vd = 0; } jumper._y += V; jumper._x += Vd; if (jumper.hitTest(trampoline)) { if (Key.isDown(Key.SPACE)) { V += g; } else { if (V>15*g) { V -= g; } } Vd = V*Math.sin(jumper._rotation*Math.PI/360); V = -V; jumper._y = trampoline._y-jumper._height; } else { V += g; } }; var KbListener:Object = new Object(); KbListener.onKeyDown = function() { switch (Key.getCode()) { case 37 : jumper._x -= 2; break; case 39 : jumper._x += 2; break; case 40 : if (jumper._rotation>-50) { jumper._rotation -= 10; } break; case 38 : if (jumper._rotation<50) { jumper._rotation += 10; } break; } }; Key.addListener(KbListener); |
|
|
![]()
Сообщение
#9
|
|
![]() Весёлый персонаж ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 891 Регистрация: 12.03.2008 Пользователь №: 4145 ![]() |
БОЛЬШОЕ СПАСИБО
ВЫРУЧИЛ! ![]() ![]() ![]() |
|
|
![]()
Сообщение
#10
|
|
![]() Участник ![]() ![]() Группа: Пользователь Сообщений: 123 Регистрация: 4.11.2006 Пользователь №: 1288 ![]() |
пожалуйста)
|
|
|
![]()
Сообщение
#11
|
|
![]() Весёлый персонаж ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 891 Регистрация: 12.03.2008 Пользователь №: 4145 ![]() |
Упсс..... опять проблема...
getBounds ![]() Как сделать так чтобы он ударялся об стены. Например Чтоб он не вылетал за пределы сцены, а отскакивал. P.S. Он в твоём примере так и наровит велетить куда подальше. Чуть - чуть не под правильным углом приземлишься всё.. он "улетел".... |
|
|
![]()
Сообщение
#12
|
|
![]() Весёлый персонаж ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 891 Регистрация: 12.03.2008 Пользователь №: 4145 ![]() |
А как на счёт этого:
- Менять позы - Отображать очки за разные трюки ![]() |
|
|
![]()
Сообщение
#13
|
|
![]() Участник ![]() ![]() Группа: Пользователь Сообщений: 123 Регистрация: 4.11.2006 Пользователь №: 1288 ![]() |
Цитата А как на счёт этого: - Менять позы - Отображать очки за разные трюки ну хоть что-то ты должен сам сделать ![]() |
|
|
![]()
Сообщение
#14
|
|
![]() Весёлый персонаж ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 891 Регистрация: 12.03.2008 Пользователь №: 4145 ![]() |
не с позами и очками я сообразил уже. Просто объясни как работает getBounds. ПЖЛСТ!
![]() ![]() |
|
|
![]()
Сообщение
#15
|
|
![]() Участник ![]() ![]() Группа: Пользователь Сообщений: 123 Регистрация: 4.11.2006 Пользователь №: 1288 ![]() |
Цитата Просто объясни как работает getBounds. вот: http://www.realcoding.net/teach/ActionScri..._max_mov12.html Проще говоря оно выдаёт переменную типа object, в которой находятся максимальные и минимальные значения х и у клипа относительно сцены или другого клипа. Сам я этим методом не пользуюсь, и зачем если есть св-ва _width,_height,_x,_y. Вот примерно так оно выглядит: movieclip1.getBounds(movieclip2) movieclip1- клип, чьи характеристики нужно узнать movieclip2 - клип, относительно чего будут узнаваться характеристики Поправьте меня если я не прав, просто этим методом не разу не пользовался, но вроде он работает так как я написал выше. Вот пример моего кода: Код var _OBJ:Object=mc.getBounds(_root)
trace([_OBJ["yMax"],_OBJ["yMin"],_OBJ["xMax"],_OBJ["xMin"]]) |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 24.11.2010 - 22:23 |