Unity 2D~ 캐릭터 조작 점프 편~

9225 단어 Unity2DUnity

스크립트 건너뛰기


저번에 캐릭터 스크립트 작업을 계속한 녀석.

스페이스 바를 누르고 점프하기

public float flap = 1000f;

void Update () {
        if (Input.GetKeyDown("space"))
        {
            rb2d.AddForce(Vector2.up * flap);
        }
}
이것을 추가하면 공백을 누르면 점프합니다
→ 이걸로 인코딩하면 몇 단계를 건너뛸 수 있다
비행량을 변경하고 싶을 때 flap 변경
속도를 바꾸고 싶을 때 Inspentor 라벨의riigidbody2D의GravitScale 수치를 높이면 ok

1 레벨 점프 제한

bool jump = false;

    void Update () {
        if (Input.GetKeyDown("space") && !jump)
        {
            rb2d.AddForce(Vector2.up * flap);
            jump = true
        }
    }

    void OnCollisionEnter2D(Collision2D other)
    {
        jump = false;
    }

객체 충돌 시 On Collision Enter 2D 호출
2D면 2D 이름을 지정해야 돼요.
주: 충돌하는 대상은 모두collider와rigidbody가 있어야 합니다
지상에 물리적인 법칙이 필요 없으니까 바디type을 static으로 하자.

땅에 부딪힐 때만 점프


각 객체에 레이블을 추가하여 충돌 시 확인할 수 있습니다.
그라운드 객체의 Inspertor Tag을 그라운드로 변경
    void OnCollisionEnter2D(Collision2D other)
    {
        if (other.gameObject.CompareTag("Ground"))
        {
            jump = false;
        }
    }
이런 느낌.

총결산


아마 이런 느낌일 거예요. 초기본적인 수평 스크롤 동작이 완성됐죠.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour {

    //変数定義
    public float flap = 1000f;
    public float scroll = 5f;
    float direction = 0f;
    Rigidbody2D rb2d;
    bool jump = false;

    // Use this for initialization
    void Start () {
        //コンポーネント読み込み
        rb2d = GetComponent<Rigidbody2D>();
    }


    // Update is called once per frame
    void Update () {

        //キーボード操作
        if (Input.GetKey(KeyCode.RightArrow))
        {
            direction = 1f;
        }else if (Input.GetKey(KeyCode.LeftArrow))
        {
            direction = -1f;
        }else
        {
            direction = 0f;
        }


        //キャラのy軸のdirection方向にscrollの力をかける
        rb2d.velocity = new Vector2(scroll * direction, rb2d.velocity.y);

        //ジャンプ判定
        if (Input.GetKeyDown("space") && !jump)
        {
            rb2d.AddForce(Vector2.up * flap);
            jump = true;
        }


    }

    void OnCollisionEnter2D(Collision2D other)
    {
        if (other.gameObject.CompareTag("Ground"))
        {
            jump = false;
        }
    }
}

좋은 웹페이지 즐겨찾기