PDA

Просмотр полной версии : Флеш игра бейсбол. Помощь в реализации.


Poverb
24.05.2013, 12:14
Нужно создать вот эту игру!
http://www.youtube.com/watch?v=ku7udGuTwwg
Все звуки текстуры у меня есть. Игра должна работать точно как на видео. Я вот не знаю с чего начать и как мне это реализовать. Может кто то чем может помочь. Там алгоритм движения мяча. Или исходник похожой игры.
Не знаю от чего отталкиваться.

Zebestov
24.05.2013, 13:12
Если ты программист, который владеет ActionScript 2.0, что именно вызывает трудности?
Если ты только начинаешь изучать flash, почему не ActionScript 3.0?

Poverb
24.05.2013, 13:14
Только начал изучать флешь, я думал что на ActionScript 2.0 будет проще.

Zebestov
24.05.2013, 13:17
Не думаю, что будет проще.
Для изучения же ActionScript 3.0 все рекомендуют эту книгу (http://www.ozon.ru/context/detail/id/4121608/).

NikolyA
24.05.2013, 14:32
исходник тебе врядли кто выложит, потому что исходник это прежде всего труд человека

Zebestov
24.05.2013, 14:48
Я думаю тут речь больше о формулах. А это уже как бы физика из школьной программы:

0. принимаем координатную систему с осью X вправо и осью Y вверх. вспоминаем ускорение свободного падения

const G:Number = -9.81; // минус, бо вниз

1. задаем угол и скорость

var angle:Number = 30; // градусов
var speed:Number = 50; // метров в секунду

2. раскладываем скорость на составляющие по осям X и Y

var speedX:Number = speed * Math.cos(Math.PI / 180 * angle);
var speedY:Number = speed * Math.sin(Math.PI / 180 * angle);

3. узнаем, где находится мяч в любое время t

var x:Number = speedX * t;
var y:Number = speedY * t + G * t * t / 2;


Ну вот как бы и вся теория.
В каждом кадре прибавляешь к текущему значению t величину 1 / stage.frameRate и вычисляешь текущие (x, y). Когда y станет меньше либо равен нулю — приземлились!
Ну и при отображении не забываем, что система координат flash осью Y направлена вниз.

Poverb
24.05.2013, 22:09
Я думаю тут речь больше о формулах. А это уже как бы физика из школьной программы:

0. принимаем координатную систему с осью X вправо и осью Y вверх. вспоминаем ускорение свободного падения

const G:Number = -9.81; // минус, бо вниз

1. задаем угол и скорость

var angle:Number = 30; // градусов
var speed:Number = 50; // метров в секунду

2. раскладываем скорость на составляющие по осям X и Y

var speedX:Number = speed * Math.cos(Math.PI / 180 * angle);
var speedY:Number = speed * Math.sin(Math.PI / 180 * angle);

3. узнаем, где находится мяч в любое время t

var x:Number = speedX * t;
var y:Number = speedY * t + G * t * t / 2;


Ну вот как бы и вся теория.
В каждом кадре прибавляешь к текущему значению t величину 1 / stage.frameRate и вычисляешь текущие (x, y). Когда y станет меньше либо равен нулю — приземлились!
Ну и при отображении не забываем, что система координат flash осью Y направлена вниз.
Большое спасибо, вы мне очень помогли. Начинаю читать книгу:)

Добавлено через 17 часов 31 минуту
Не чего не получается. Как сделать что б мяч летел в верх а потом плавно опускался?
var speedX:Number = speed * Math.cos(Math.PI / 180 * angle);
var speedY:Number = speed * Math.sin(Math.PI / 180 * angle);
Ведь благодаря этому он просто летит в перёд и верх...

Zebestov
25.05.2013, 17:00
Ведь благодаря этому он просто летит в перёд и верх...
Совершенно верно.
Ээх, прокачать бы тебе усидчивость и наблюдательность! Только представь: можно было бы таки дочитать мои инструкции до конца и не вырывать подготовительные вычисления из контекста.

Poverb
25.05.2013, 17:03
Совершенно верно.
Ээх, прокачать бы тебе усидчивость и наблюдательность! Только представь: можно было бы таки дочитать мои инструкции до конца и не вырывать подготовительные вычисления из контекста.
Движение мяча настроил. Плавно взлетает и плавно опускается. А как можно сделать шкалу что б предавать параметры при нажатии кнопки зависимости от показателя шкалы как на видео?

Poverb
26.05.2013, 00:31
Всем спасибо за помощь игра окончена:) Тему можно закрыть.
Untitled-1.swf
PS:
1) spase
2) ALT

Zebestov
26.05.2013, 00:56
Весьма неплохо!
Только мяч летит ненатурально, медленно. Попробуй или масштаб сделать не таким мелким, или скорости прибавить, или время в каждом кадре увеличивать чуть интенсивней.