2016-07-05 4 views
1

저는 프로그래밍에 익숙하지 않습니다. 저는 자바 스크립트를 사용하여 학교에서 게임을 할 수있는 간단한 플랫폼을 만들고 있습니다.자바 스크립트로 점프 코드

지금 나는 캐릭터를 점프하게 만드는 코드 작업을하고 있습니다. 움직임이 유창하고 사실적으로 보이기를 원하기 때문에 캐릭터가 위아래로 움직이는 것보다 훨씬 복잡합니다. 캐릭터가 점프하면 땅을 빨리 떠난 다음 높을수록 속도가 느려지고 특정 지점에 도달하면 천천히 떨어집니다. 가속도가 떨어질 때 속도가 빨라지고 (아마도 가속도 변수의 일부 유형을 사용하여) 가속 한 다음지면에 충돌하여 완전히 멈 춥니 다.

공중에서 좌우로 움직일 수있는 캐릭터를 원하고 키를 누르고 있으면 한 번 점프 한 다음 캐릭터가 땅에 닿았을 때 키가 계속 있으면 다시 뛰기를 원합니다. (게임 내 캐릭터는 상당히 높은 점프가 가능해야합니다)

나는 이것을하기 위해 노력했지만, 재밌는 에러가 발생했습니다. 누군가 단지 시작하는 상당히 인상적이다

//movement (x) 
    var maxSpeed = 12.5; 
    var xForce = 0; 
    var kingXPos = 0; 

    //movement (y) 
    var yForce = 0; 
    var kingYPos = 202; 

    //LV design 
    var floorHeight = 150; 

var draw = function() { 

//background and basics 
    background(255, 0, 0); 
    image(getImage("creatures/Winston"), kingXPos, kingYPos, 50, 50); 

//level features (only the floor right now) 
    fill(0, 0, 0); 
    rect(0, 250, 400, floorHeight); 

//right movement 
     if (keyIsPressed && keyCode === RIGHT) { 
    kingXPos = kingXPos + xForce; 
    xForce = xForce + 0.25; 
    if (xForce >= maxSpeed && keyIsPressed) { 
     xForce = maxSpeed; 
    } 
    } 

//left movement 
    if (keyIsPressed && keyCode === LEFT) { 
    kingXPos = kingXPos + xForce; 
    xForce = xForce - 0.25; 
    if (xForce <= -maxSpeed && keyIsPressed) { 
     xForce = -maxSpeed; 
    } 
    } 

//jump (not yet functional) 
    if (keyTyped && keyCode === UP && kingYPos === floorHeight + 50) { 
     kingYPos = kingYPos + yForce; 
     yForce = yForce - 0.5; 

    } 

//other physics 
    if (!keyIsPressed) { 
    kingXPos = kingXPos + xForce; 
    if (xForce > 0) { 
     xForce = xForce - 0.25; 
    } 
    else if (xForce < 0) { 
     xForce = xForce + 0.25; 
    } 
    } 
}; 
+0

1) 우리에게 오류를 보여주십시오 2) 우리에게 * 특정 * 문제를주십시오 – Li357

답변

3

:

은 여기 내 (매우 세분화) 코드입니다. 당신은 기하학에 대해 직관적으로 이해하고있는 것처럼 보입니다. 그러나, 얼마나 많은 교육을 받았는지 모를 도메인 지식이 있습니다.

물리학에서 운동을 설명 방정식의 올바른 설정은 다음과 같습니다

1. speed = change_in_location/time 

2. acceleration = change_in_speed/time 

참고 :이 "속도"보다 입력하는 짧은 때문에 내가 여기에 단어 "속도"를 사용하고 있습니다. 정확한 단어는 기술적으로 "속도"입니다. 물리 속도는 속도와 약간 다른 것을 의미합니다.

당신이 알아야 할 또 다른 사항은 중력이 가속의 한 형태라는 것입니다. 구체적으로는 9.8m/S/S

그래서 위의 모든 재 작성의 하향 가속도 : 당신이 일정 시간 애니메이션 루프는 가정 할 수 있습니다 가정하면

new_location = (speed * time) + old_location 

new_speed = (acceleration * time) + old_speed 

time = 그래서 1. 그 단순화하는 그것을 위해 :

new_location = speed + old_location 

new_speed = acceleration + old_speed 

이것은 중력을 시뮬레이트하기에 충분합니다. 중력이 단지 가속이기 때문에 :

// jump: 
kingYSpeed = -SOME_OTHER_NUMBER; // negative because "up" 

주 : 이동

gravity = SOME_NUMBER; // tune this to get the gravity you want 

kingYPos = kingYPos + kingYSpeed; 

kingYSpeed = kingYSpeed + gravity; 

은 객체에게 속도 즉시 활력을 불어 도메인 지식 프로그래머가 이해해야 프로그램의 외부 지식 특정 문제를 해결하기 위해 예를 들어, 회계 소프트웨어를 작성하는 프로그래머는 회계에 대한 지식이 있어야합니다. 실제로 업계의 모든 프로그래머가 도메인 지식을 습득하려고 노력하는 것은 아닙니다. 때로는 시스템 분석가/컨설턴트가 소프트웨어에 대한 요구 사항을 작성하기 때문에 때로는 그렇습니다. 그러나 자신 만의 소프트웨어를 작성할 때 도메인 지식을 습득 할 수밖에 없습니다.

+0

고마워요! 나는 이것을 들여다 볼 것이다. 도와 주셔서 감사합니다. – Marco