본문 바로가기
Unity3D

물리엔진을 사용하지 않고, 쿠키런 처럼 점프하기

by CodeDiver 2014. 8. 12.

<출처>

http://blog.naver.com/PostView.nhn?blogId=predev&Redirect=View&logNo=130178007397&categoryNo=71&isAfterWrite=true



쿠키런같은 2D게임에 물리엔진을 사용하기가 그래서 스크립트로 간단하게 구현해 보았습니다.

예제가 파일로 첨부되어있으니 다운받아서 직접 실행해보세요.

 



<소스>

cookie_run_jump (2).zip



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
using UnityEngine;
using System.Collections;
  
public class jump : MonoBehaviour
{
    float y = 0.0f;
    float gravity = 0.0f;     // 중력느낌용
    int direction = 0;       // 0:정지상태, 1:점프중, 2:다운중
    // 설정값
    const float jump_speed = 0.2f;  // 점프속도
    const float jump_accell = 0.01f; // 점프가속
    const float y_base = 0.5f;      // 캐릭터가 서있는 기준점
    void Start()
    {
        y = y_base;
    }
    void Update()
    {
        JumpProcess();
        if (Input.GetKeyUp(KeyCode.Space))
        {
            DoJump();
        }
        // y값을 gameObject에 적용하세요.
        Vector3 pos = gameObject.transform.position;
        pos.y = y;
        gameObject.transform.position = pos;
    }
    void DoJump() // 점프키 누를때 1회만 호출
    {
        direction = 1;
        gravity = jump_speed;
    }
    void JumpProcess()
    {
        switch (direction)
        {
            case 0: // 2단 점프시 처리
            {
                if (y > y_base)
                {
                    if (y >= jump_accell)
                    {
                        //y -= jump_accell;
                        y -= gravity;
                    }
                    else
                    {
                        y = y_base;
                    }
                }
                break;
            }
            case 1: // up
            {
                y += gravity;
                if (gravity <= 0.0f)
                {
                    direction = 2;
                }
                else
                {
                    gravity -= jump_accell;
                }
                break;
            }
 
            case 2: // down
            {
                y -= gravity;
                if (y > y_base)
                {
                    gravity += jump_accell;
                }
                else
                {
                    direction = 0;
                    y = y_base;
                }
                break;
            }
        }
 
    }
 
}

 

 

<cocos2d-x에 적용>


// 물리엔진 없이 중력이 적용된 점프..............

float y = 0.0f;

float gravity = 0.0f; // 중력느낌용

int direction = 0; // 0:정지상태, 1:점프중, 2:다운중


// 설정값

const float jump_speed = 13.0f; // 점프속도

const float jump_accell = 0.5f; // 점프가속

const float y_base = 160; // 캐릭터가 서있는 기준점

//............................................................


나머지 코드는 동일하게 사용가능. ^^
좋다!!


'Unity3D' 카테고리의 다른 글

Mobile Movie Texture 플러그인  (0) 2014.10.29
Bitmap Font Generator 사용방법  (0) 2014.09.02
Admob 광고 붙이기 - 방법2  (0) 2014.07.31
Admob 광고 추가하는 방법  (0) 2014.07.31
해상도 대응하기  (0) 2014.07.30