본문 바로가기
유니티강좌

점프대 만들기. 특정영역 진입시 원하는 높이(강도)만큼 점프 JumpZone | 트램펄린(방방이), 용수철 등에 활용 | 유니티 게임 개발 튜토리얼(Unity & C# Script)

by Ncube 2021. 1. 11.

 

 

지면이 될 Ground와 점프대가 될 JumpZone을 각각 배치하고 Tag로 지정합니다. 플레이어는 좌우 이동과 기본점프가 가능하며 JumpZone에 진입하면 정해놓은 높이(강도)로 부~아앙 튀어오르게 됩니다. 기본 점프 강도, 기본 점프 개수, 이동 스피드, 점프대 높이 조절 가능합니다. 
기본 점프와 점프대는 AddForce를 이용해 힘을 부여받고, OnCollisionEnter2D를 통해  tag가 "Ground"일 경우 기본 점프 지정, tag가 "JumpZone"일 경우는 점프대가 발동됩니다.

 

 

 

[JumpZone.cs]

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

public class JumpZone : MonoBehaviour
{
    [SerializeField] float jumpForce = 400f, speed = 5f, jumpZoneForce = 2f;
    int jumpCount = 1;
    float moveX;

    bool isGround = false;
    bool isJumpZone = false;
    Rigidbody2D rb;

    void OnCollisionEnter2D(Collision2D col)
    {
        if (col.gameObject.tag == "Ground")
        {
            isGround = true;
            jumpCount = 1;
        }
        if (col.gameObject.tag == "JumpZone")
        {
            isJumpZone = true;
        }
    }

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        jumpCount = 0;
    }

    void Update()
    {
        Movement();
    }

    void Movement()
    {
        if (isGround)
        {
            if (jumpCount > 0)
            {
                if (Input.GetButtonDown("Jump"))
                {
                    rb.AddForce(Vector2.up * jumpForce);
                    jumpCount--;
                }
            }

            if (isJumpZone)
            {
                rb.AddForce(new Vector2(0, jumpZoneForce) * jumpForce);
                isJumpZone = false;
            }
        }

        moveX = Input.GetAxis("Horizontal") * speed;
        rb.velocity = new Vector2(moveX, rb.velocity.y);
    }
}

 

댓글