강의 그대로 따라해서 만든거

 

기본 기능 몇개만 구현

 

 

+

 

배운 팁

 

Mathf.FloorToInt
는 소수점 버림을 뜻한다

CeilToInt
는 소수점 올림을 뜻한다

int 정수 값과 float 소수점 값을 넘나들 때
이런 버림, 올림 같은 걸 써야 한다


Get( level );
Get(level);
이렇게 띄어 쓰기 해도 됨


0.5f 는 0.5 초 를 의미함


직렬화 (Serialization) 
개체를 저장 또는 전송하기 위해 변환

퍼블릭 클래스 정했는데, 유니티 인스펙터 상에 안 뜨면
[System.Serializable] 를 위에 적어주면 뜬다



초기화
맨 처음에 행해져야 하는 일
설정하기 라는 뜻

animCon[data.spriteType]
이렇게 대괄호 [] 안에 들어가면
인덱스 몇번째 변수로 지정하겠다는 뜻





NullReferenceException: Object reference not set
오류 날 땐
void Start() 를
void Awake() 로 변경 해 봐라

 

 

 

+

 

컴포넌트 설정을 스크립트에서 다루기

 

 

1. 인스펙터 창에서

유니티에서 제공하는 기본 컴포넌트 를 적용함

 

 

2. 변수 변수이름

변수를 설정함. 새로 하나 만드는 거임.

 

3. 변수에 컴포넌트 적용함

보이드 어웨이크 안에서 행해짐

 

+

 

if (!collision.CompareTag("Enemy") || per == -1)

 

짧게 줄여쓰기

if (!collision.CompareTag("Enemy")) 
    return;

if (per == -1) 
    return;

 

보기 좋게 나눠서 표현하기

 

위 코드 두개는 같다

 

적 태그가 에너미가 아니면 암것도 안한다

관통력이 무한이면 암것도 안한다

 

+

 

 

에러메시지 더블클릭해보면 어디서 에러났는지 위치 알 수있다고 함

 

+

 

public class Bullet : MonoBehaviour
{
    public float damage;
    public int per;

    Rigidbody2D rigid;

    void Awake()
    {
        rigid = GetComponent<Rigidbody2D>();
    }

    public void Init(float damage, int per, Vector3 dir)
    {
        this.damage = damage;
        this.per = per; // 관통력. 수치가 -1이면 무한관통. 2이면 2마리만 관통

        if (per > -1){
            //-1은 관통력 무한임. 
            rigid.linearVelocity = dir * 15f;
            //dir * 15f 는 날아가는 속도 
        }
    }

    void OnTriggerEnter2D(Collider2D collision)
    {
        if (!collision.CompareTag("Enemy") || per == -1)
            return;
        per--;
        if (per == -1)
        {
            rigid.linearVelocity = Vector2.zero;
            gameObject.SetActive(false);
        }

    }

}

 

이런 식으로

총알 오브젝트에

per , 관통력 이라는 속성을 넣어줄 수 있다고함

 

이 관통력이 재밌음

-1 이면 무한 관통

1이면 한마리만 맞음

2이면 두마리만 맞음

 

+

 

GameManager 에게 다 몰아주지 말고

 SkillManager , UIManager 등으로 역할 나눠라

 

 

반응형
Posted by 이름이 익명
: