Среда, 20 Ноября 2024, 08:44

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Урок "платформер - выравнивание под платформу"
apoptomДата: Пятница, 29 Октября 2010, 15:44 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
В этом уроке я расскажу как создать геймплей платформера с выравниванием под платформу. Под выравниванием под платформу, я имею ввиду, что главный герой, стоя на платформе, принимает перпендикулярное положение относительно ее. Для начала создадим главного героя - в моем случае это квадрат 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-ю версию.

Скриншоты:

Прикрепления: 1522103.png (23.1 Kb) · 7733448.png (22.9 Kb) · 0925617.png (23.2 Kb)


Сообщение отредактировал apoptom - Пятница, 29 Октября 2010, 15:44
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг