반응형

탱크 게임 만들기 영상

 

 

Textrue 파일

tankgameTexure.unitypackage
0.06MB

유니티 프로젝트 파일을 만들고  Scenes 파일을 열여 씬 이름을 TankGame으로 바꿉니다 

 

 

 

Texture파일을 만들고 Textrure 파일을 임포트 합니다  파일을 유니티로 끌어오거나 아니면 Texture 폴더를 선택하고 마우스 오른쪽 버튼을 누르고 import package -> Custorm Package를 선택하여 다운로드한 Textrure 파일을 선택하면 됩니다 

 

Game 화면을 아래 그림과 같이 Type ->Filxed Resolution 을 1024 476으로 맞춥니다

 

 

 

하이 라키 뷰에서 BackGround 오브젝트를 만들고 Add Compnent를 선택하여 Sprite Renderer를 선택하고 그림 background를 넣고 SortingLayer를 Background를 생성하여 Order in Layer를 0으로 맞춥니다 

 

Game 뷰에서 아래 그림과 같은 화면이 됩니다 

 

 

하이 라키 뷰에서 Player 오브젝트를 만들고 Tag와 Layer를 Player 로 합니다 

 

 

 

Player 오브젝트 자식으로 Tank_body 오브젝트를 만들고 그림 tank_body를 넣고 Sorting Layer를 Add Sorting Layer 를 누르고   Player 생성하고  Order in Layer 0으로 맞춥니다 

Sorting Layer 순서입니다 

 

Player 자식으로 Tank_top 오브젝트를 만들고 Sprite Renderer를 생성하여 tank_cannon을 넣고 SortingLayer -> Player

Order in Layer ->1로 합니다 

 

 

 

 

하이 라키 뷰에서 Player 오브젝트를 선택하고 Rigidbody2 D를 붙이고 Gravity Scale ->0으로 하고 Box Collider2D를 붙입니다

 

Scripts 폴더를 만들고 Player 스크립트를 생성하여 작성합니다 

 

 

 

Player Scripts작성

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

public class Player : MonoBehaviour
{
    public float speed; //탱크 스피드

    private Rigidbody2D rb;

    private Vector2 moveAmount;//탱크 움직임 방향

    public float health;//탱크 체력

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

    void Update()
    {
        //탱크의 방향을 키보드 ad(좌우) ws(위,아래) 설정
        Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
        //탱크방향에 속도를곱한다
        moveAmount = moveInput.normalized * speed;
    }

    //탱크가 움직일수 있도록 프레임을 곱한다
    private void FixedUpdate()
    {
        rb.MovePosition(rb.position + moveAmount * Time.fixedDeltaTime);
    }

    //적의 공격을 받을 때 체력을 감소시킨다
    public void TakeDamage(int damageAmount)
    {
        health -= damageAmount;
        if (health <= 0)
        {
            Destroy(gameObject);
        }
    }
}

 

 

작성한 Player스크립트를 Player 오브젝트에 붙입니다 

 

 

TankTopCtrl 스크립트를 생성하고 작성합니다 

 

 

 

TankTopCtrl스크립트 작성

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

public class TankTopCtrl : MonoBehaviour
{
    void Update()
    {
        Vector2 direction = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
        float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
        Quaternion rotation = Quaternion.AngleAxis(angle - 90, Vector3.forward);
        transform.rotation = rotation;
    }
}

 

Player 자식으로 있는 Tank_top 오브젝트를 선택하고 TankTopCtrl 스크립트를 붙힘니다 

 

 

 

 

아래 동영상과 같이 탱크가 움직이고 마우스 움직임에 따라 포탑이 움직이면 됩니다 

 

반응형

+ Recent posts