아빠는 개발자

[unity] 공격무기 (weapon) 만들기 본문

GAME

[unity] 공격무기 (weapon) 만들기

father6019 2024. 2. 25. 01:24
728x90
반응형

핸드폰에 집어넣으려다가.. 그렇다 한번 다 날려 먹었다..  아니지 몇번 날려 먹었지 

 

xcode 를 다운받는데 다운이 안받아지는 이슈가 있을땐.. OS를 업데이트 해야한다.

그럼 받아지는데 구글링해서 얻은 정보로 iphone 으로 빌드하려고 할때.. 뭔가 잘못한건지는 모르겠지만

몇번 날라갔다..

 

덕분에 복습을 하는 

 

작업의 요지랄까 핵심은

무기는 Prefabs 로 만들어서 Player 에서 상대 위치값으로 사용한다

 

일단 결과 물은

 

 

뻘건용의 미사일은 노란용 ㅋㅋ

이미지 검색하는게 귀찮아서 그냥 노란용을 사이즈 줄여서 사용

 

작업을 해보자

 

우선 노란용을 Sprites 디렉토리에 끌어다 넣는다 

그리고 쪼개기 Payer 만들때와 동일하지만 slice Editor >  split 옵션을 Auto 로 해버리면 지멋대로 알아서 잘리긴 한다. 

 

적당한 위치에 끌어다 놓고 weapon 스크립트를 엮어준다. 

Weapon 스크립트 내용 

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

public class Weapon : MonoBehaviour
{
    [SerializeField]
    private float moveSpeed = 10f;

    // Start is called before the first frame update
    void Start()
    {
        Destroy(gameObject, 1f);
    }

    // Update is called once per frame
    void Update()
    {
        transform.position += Vector3.up * moveSpeed * Time.deltaTime;
    }
}

Weapon 에 테그를 달아보자

 

 

Add Tag에 Weapon 을 추가하고 Weapon 을 등록해준다. 

 

 

미사일이 연속 발사가 되야 하니까 prefabs 에 등록 해야 한다고 한다. 

하이라키에서 Prefabs 에 weapon을 끌어다 놓는다 

 

 

이렇게 등록하고  Player 하위에 빈 오브젝트 (GameObject) 를 만들어 준다. - 미사일의 발사 위치를 잡기 위해(?)

 

그리고 Player 스크립트 수정 

 

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

public class Player : MonoBehaviour
{
    [SerializeField]
    private float moveSpeed;

    [SerializeField]
    private GameObject weapon;

    [SerializeField]
    private Transform shootTrasform;


    [SerializeField]
    private float shootInterval =  0.15f;
    private float lastShootTime =  0f;


    void Update()
    {
        Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        float toX = Mathf.Clamp(mousePos.x, -2.35f, 2.35f);
        transform.position = new Vector3( toX, transform.position.y, transform.position.z);

        Shoot();
    }

    void Shoot() {

        if(Time.time- lastShootTime > shootInterval) {
            Instantiate(weapon, shootTrasform.position, Quaternion.identity);
            lastShootTime = Time.time;            
        }

    }
}

 

이렇게 스크립트를 수정하면 Inspector 영역 Player 스크립느 부분에 Weapon , Shoot Trasform, Shoot Interval 이 생기는데 

Weapon 과 Shoot Trasform 을 끌어다가 엮어준다.  

 

Weapon 은 끌어다 놓았을때  + 가 안뜰 수 있는데 옆에 버튼을 클릭해서 Weapon 을 찾아서 입력 

 

 

그럼 아래와 같이 엮여 있음. 

728x90
반응형

'GAME' 카테고리의 다른 글

[unity] Enemy 만들기  (0) 2024.02.25
[unity] dragon (player)  (0) 2024.02.18
[unity] background  (0) 2024.02.18