В этом уроке я расскажу как создать геймплей платформера с выравниванием под платформу. Под выравниванием под платформу, я имею ввиду, что главный герой, стоя на платформе, принимает перпендикулярное положение относительно ее. Для начала создадим главного героя - в моем случае это квадрат 50*50 (мувик) с именем "hero" и платфому (мувик) с именем "stena". Все, осталось кинуть код в рут:
Code
speed_ruh=10
padinnya=0
l1x=0
l1y=0
l2x=0
l2y=0
onEnterFrame=function(){
//движение
ugol=(hero._rotation+0)/180*Math.PI
if(Key.isDown(65)){//лево
hero._x-=speed_ruh*Math.cos(ugol)
hero._y-=speed_ruh*Math.sin(ugol)
}
if(Key.isDown(68)){//право
hero._x+=speed_ruh*Math.cos(ugol)
hero._y+=speed_ruh*Math.sin(ugol)
}
//end движение
//povorot
for(i=1;i<50;i++){
ugol1=(hero._rotation+180+5)/180*Math.PI
l1x=hero._x
l1y=hero._y
l1x+=25*Math.cos(ugol1)
l1y+=25*Math.sin(ugol1)
if(stena.hitTest(l1x,l1y,true)){//если касаемся слева
//поворачиваем за часовой стрелкой
hero._rotation+=1
}
ugol2=(hero._rotation-5)/180*Math.PI
l2x=hero._x
l2y=hero._y
l2x+=25*Math.cos(ugol2)
l2y+=25*Math.sin(ugol2)
if(stena.hitTest(l2x,l2y,true)){//если касаемся справа
//поворачиваем против часовой стрелки
hero._rotation-=1
}
}
//end povorot
//падение
if((stena.hitTest(l1x,l1y,true)==false)and(stena.hitTest(l2x,l2y,true)==false)){
padinnya+=0.5
}
if(stena.hitTest(l1x,l1y,true ) ){//если касаемся левой точкой
padinnya=0
for(i=1;i<200;i++){
hero._y-=0.1
l1y-=0.1
l2y-=0.1
if(stena.hitTest(l1x,l1y,true)==false){
i=205
}
}
}
if(stena.hitTest(l2x ,l2y,true )){//если касаемся правой точкой
padinnya=0
for(i2=1;i2<200;i2++){
hero._y-=0.1
l1y-=0.1
l2y-=0.1
if(stena.hitTest(l2x,l2y,true)==false){
i2=205
}
}
}
if(stena.hitTest(hero._ x,hero. _y,true)){//если касаемся центром
padinnya=0
for(i=1;i<200;i++){
hero._y-=0.1
if(stena.hitTest(hero._x,hero._y,true)==false){
i=205
}
}
}
hero._y+=padinnya
//end падение
}
Для плавности можно поставить частоту 30 фпс.
Скачать:
[swf]
[exe]
[fla]
Flash файлы сохранены пд 9-ю версию.
Скриншоты: