ㅇ
ㅇ
import flash.events.event;
var chan: soundchannel;
var s: sound = new bgm;
chan = s.play();
stage.addeventlistener(keyboardevent.key_down, presskey);
stage.addeventlistener(keyboardevent.key_up, releasekey);
var key32 = false;
var key37 = false;
var key38 = false;
var key39 = false;
function presskey(e: keyboardevent) {
if (e.keycode == 32) {
key32 = true;
}
if (e.keycode == 37) {
key37 = true;
}
if (e.keycode == 38) {
key38 = true;
}
if (e.keycode == 39) {
key39 = true;
}
}
function releasekey(e: keyboardevent) {
if (e.keycode == 32) {
key32 = false;
}
if (e.keycode == 37) {
key37 = false;
}
if (e.keycode == 38) {
key38 = false;
}
if (e.keycode == 39) {
key39 = false;
}
}
function init() {
player.life = 5; //hp
player.walkspeed = 10; //이동속도
player.g = 0.4; //중력
player.f = 0.8; //마찰
player.colmove = 0.1; //충돌 처리관련
player.vx = 0; //x변화량
player.vy = 0; //y변화량
player.power = 0.7; //power
player.jump = -8; //점프력
player.count = 0; //점프 관련 변수
player.jumping = false; //점프 중인가?
player.doublejump = false; //더블 점프를 사용 중인가?
player.doublejumpdivide = 1.2; //더블 점프력
}
function stepevent(e: event) {
/* if(player.vx < -0.05 && player.vx >= 0)
{
player.vx = 0;
}*/
if(key32)
{
trace(player.vx);
}
t1.text = string("x : " + player.x.tofixed(2));
t2.text = string("y : " + player.y.tofixed(2));
t3.text = string("vx : " + player.vx.tofixed(2));
t4.text = string("vy : " + player.vy.tofixed(2));
//이 부분은 enterframe 으로 제어됨
if (player.life < 1) {
//플레이어의 사망
}
if (player.y > 500) {
player.life--; //플레이어의 낙하 (라이프1 감소)
}
player.vx = player.vx * player.f; //x축 조정 (왼쪽, 오른쪽)
player.vy = player.vy + player.g; //y축 조정 (떨어짐)
player.y = player.y + player.vy;
player.x = player.x + player.vx;
if (key37 && !ground.hittestpoint(player.x - player.width / 2 - 3, player.y, true)) {
player.vx = player.vx - player.power;
} else if (key39 && !ground.hittestpoint(player.x + player.width / 2 + 3, player.y, true)) {
player.vx = player.vx + player.power;
}
if (key38) {
player.count = player.count + 1;
if (player.count == 1) {
if (player.jumping == false) {
player.vy = player.vy + player.jump;
player.y = player.y + player.jump;
player.jumping = true;
} else if (player.doublejump == false) {
player.vy = 0;
player.vy = player.vy + player.jump / player.doublejumpdivide;
player.y = player.y + player.jump / player.doublejumpdivide;
player.doublejump = true;
}
}
} else {
player.count = 0;
}
collisions(player); //충돌처리 (땅과 플레이어)
}
function collisions(ob) {
var ob2 = ob;
while (ground.hittestpoint(ob.x, ob.y - ob.height / 2, true)) {
ob2.y = ob2.y + player.colmove;
ob2.vy = 0;
}
while (ground.hittestpoint(ob.x + ob.width / 3, ob.y + ob.height / 2, true) || ground.hittestpoint(ob.x - ob.width / 3, ob.y + ob.height / 2, true)) {
ob2.y = ob2.y - player.colmove;
ob2.vy = 0;
ob2.jumping = false;
ob2.doublejump = false;
}
while (ground.hittestpoint(ob.x + ob.width / 2, ob.y - ob.height / 2, true) || ground.hittestpoint(ob.x + ob.width / 2, ob.y + ob.height / 3, true)) {
ob2.x = ob2.x - player.colmove;
ob2.vx = 0;
}
while (ground.hittestpoint(ob.x - ob.width / 2, ob.y - ob.height / 2, true) || ground.hittestpoint(ob.x - ob.width / 2, ob.y + ob.height / 3, true)) {
ob2.x = ob2.x + player.colmove;
ob2.vx = 0;
}
}
init();
stage.addeventlistener(event.enter_frame, stepevent);
|