3D игра
Всем известны игры на flash где надо набивать мяч курсором, сейчас сделаем такую-же, но в 3D.
Рисуем "стакан":
-Рисуем две линии, каждая из угла в угол. Должно получиться похожее на X.
-Рисуем вертикальную линию, через все поле по x=90 и еще одну по x=500.
-И горизонтальную линию в нижней части комнаты от 90 по _y до 500.
-Разрисуйте как хотите.
-После написания кода, надо будет выравнить всё ещё раз.
Рисуем мячик размером в 60 на 60 пикселей и тень мячика размером в 80 пикселей. Нарисуйте курсор.
Создаем 3 мувка. Названия такие:
Мячик: miach
Тень: shadow
Курсор: cur
Создайте 3 динамических текстовых поля. Назовите первый "mscore", второй "score" и третий "sec". Импортируйте два звука; Один удара мячика о стену, а другой победный. Назовите их "hit", и "goal".
А теперь впишите этот большой код в мячик:
onClipEvent (load) {
y=12;
}
onClipEvent (enterFrame) {
pan=_x-275;
difscale=100-_yscale;
y--;
_y-=y;
_x-=x;
// miach _y action
if (_y>387-difscale) {
_y=387-difscale;
y*=-0.8;
x*=0.8;
if (y>2) {
ssound=new Sound();
ssound.attachSound("hit");
ssound.setPan(pan);
ssound.setVolume(_root.shadow._y/7);
ssound.start();
}
}
if (_x>504-difscale) {
_x=504-difscale;
x*=-1;
ssound=new Sound();
ssound.attachSound("hit");
ssound.setPan(pan);
ssound.setVolume(_root.shadow._y/7);
ssound.start();
} else if (_x<47+difscale) {
_x=47+difscale;
x*=-1;
ssound=new Sound();
ssound.attachSound("hit");
ssound.setPan(pan);
ssound.setVolume(_root.shadow._y/7);
ssound.start();
}
if (_yscale<20) {
_xscale=20;
_yscale=20;
scale*=-1;
ssound=new Sound();
ssound.attachSound("hit");
ssound.setVolume(_root.shadow._y/7);
ssound.setPan(pan);
ssound.start();
} else if (_yscale>100) {
_xscale=100;
_yscale=100;
scale*=-1;
}
if (scale>0) {
scale*=.9;
}
_xscale-=scale;
_yscale-=scale;
_rotation-=x;
}
onClipEvent (mouseDown) {
if (hitTest(_root.cur)) {
y=12;
x=(_root._xmouse-_x)*0.8;
scale=15;
}
}
А этот в тень:
onClipEvent (enterFrame) {
dif=(_root.miach._y-355)/7;
_x=_root.miach._x;
_y=((_root.miach._yscale)+(300))+dif;
dis=_y-_root.miach._y;
scale=_root.miach._yscale+dis;
_xscale=scale;
_yscale=scale/3;
}
А это в курсор:
onClipEvent (enterFrame) {
_x=_root._xmouse;
_y=_root._ymouse;
}
Теперь создаем другой слип, который будет работать, когда шарик стукается о стенку. И вписываем код:
onClipEvent (enterFrame) {
if (hitTest(_root.miach )&& _root.miach._yscale<20 && _root.time>0) {
_root.score++;
ssound=new Sound();
ssound.attachSound("goal");
ssound.start();
}
// set goals
if (_root.go_on==1) {
_root.time--;
_root.secs=int(_root.time/37);
if (_root.time<=0) {
_root.go_on=0;
}
}
// set max score
if (_root.score>_root.mscore) {
_root.mscore=_root.score;
}
_root.score="Goals: "+_root.score;
_root.mscore="Max Score: "+_root.mscore;
_root.sec="Time: "+_root.secs;
}
Создайте кнопку старт и добавьте это:
on (release) {
go_on=1;
score=0;
time=1110;
}
Код в первом фрейме:
Mouse.hide();
score=0;
time=0;
secs=0;
go_on=0;
mscore=0;
Запускаем и смотрим что получилось. |