Unity3D/유니티 공부

[Unity2D 공부] 이동과 충돌 학습정리

상연 2021. 6. 7. 03:52

목차

    인프런에서 강의를 듣다가, 이건 아직 내가 소화할 난이도가 아니다 싶어서 일단 덮어두고 서점에서 간단한 책을 사왔다.

    그래도 강의에서 배운게 허투루 배운것은 아니었는지 유니티를 다루는 거 자체는 예전보다 훨씬 수월했고 내용을 이해하는것이 괜찮았다. 책에 있는 간단한 프로젝트를 따라하며 생 기초를 익히고 있는 중...

    우선 첫 번째로 종스크롤 슈팅 게임을 만들었다.


    결과물

     

    정말 간단한 종스크롤 슈팅게임이다.

    배경 / 비행기 / 총알 / 적 / 점수

    구성요소는 단 5개이다. 

    내가 스프라이트 이미지가 없다고 하니 바쁜 시험기간에도 열심히 비행기 / 적(지토) / 총알(로켓) 을 만들어준 친구에게 압도적 감사...

     

    폰틱의 블로그

     

    pontic.tistory.com

    [도와준 친구의 블로그]

     

    사실, 적과 부딪히면 죽고 씬이 바뀌는거까지 구현해야하는데...

    귀찮아서 저정도에서 멈췄다...

    죽고 씬 바뀌는거야 뭐, 콜라이드 충돌 함수 써가지고 충돌하면 씬 불러오기 하면 되겠지


    쓰인것, 이동과 충돌

    위의 결과물을 만들면서 배운것은 2가지이다.

    하나는 스프라이트를 이동시키는 법, 그리고 또 하나는 스프라이트간의 충돌.

    생각을 해보자. 

    1. 뒷배경이 반복해서 '이동'한다.

    2. 마우스를 누르면 그곳으로 비행기가 '이동'한다.

    3. 일정 간격으로 총알이 생성되어 '이동'한다.

    4. 적이 생성되어 플레이어 방향으로 '이동'한다.

    5. 총알이 적과 '충돌'하면 둘 다 사라진다.

     

    즉, 오브젝트를 스크립트를 통해 이동시키고, 충돌에 대해 관리한다면 위와 같은 결과물을 만들 수 있다는 것이다.


    세세하게 함수 사용법부터 다 정리하고도 싶은데, 아직 생 기초에 계속해서 배울 공부내용이 산더미라

    오늘 알게된 함수들에 대한 레퍼런스 주소만 올려놓고자한다.

    아무래도 내가 강좌느낌으로 글을작성하는게 아니라 배운것을 되새기는 정도이기때문에 오히려 블로그 글 작성에 긴 시간을 투자하기는 아까운 감이 있다.

     

    GetComponent

    Component 받아오기 때문에 Transform 받아오면 그걸로 위치 변경 가능.

    기초 중에 기초 아주 중요함.

    https://docs.unity3d.com/2020.3/Documentation/ScriptReference/Component.GetComponent.html

     

    Unity - Scripting API: Component.GetComponent

    Component.GetComponent will return the first component that is found and the order is undefined. If you expect there to be more than one component of the same type, use Component.GetComponents instead, and cycle through the returned components testing for

    docs.unity3d.com

     

    Vector2

    https://docs.unity3d.com/2020.3/Documentation/ScriptReference/Vector2.html

     

    Unity - Scripting API: Vector2

    Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Close

    docs.unity3d.com

    위치 변경, 즉 이동할때 Vector를 조정해주는데, 그럴려면 Vector의 요소를 더 잘 알아야 할듯.

     

    Transform.Translate

    https://docs.unity3d.com/2020.3/Documentation/ScriptReference/Transform.Translate.html

     

    Unity - Scripting API: Transform.Translate

    Declaration public void Translate(float x, float y, float z); Declaration public void Translate(float x, float y, float z, Space relativeTo = Space.Self);

    docs.unity3d.com

    쉽게 좌표값 변경하는 함수

     

    ScreenToWorldPoint()

    https://docs.unity3d.com/2020.3/Documentation/ScriptReference/Camera.ScreenToWorldPoint.html

     

    Unity - Scripting API: Camera.ScreenToWorldPoint

    World space coordinates can still be calculated even when provided as an off-screen coordinate, for example for instantiating an off-screen object near a specific corner of the screen. Screenspace is defined in pixels. The bottom-left of the screen is (0,0

    docs.unity3d.com

    스크린의 좌표를 월드 좌표계로 쉽게 바꿔주는 함수.

    이는 좌표계에대한 이해가 있어야 하는데, 이전에 강의를 들으면서 어느정도 이해는 했었다.

    다만 여기에 적자니 정확한 정보라 자신하긴 힘들어서 우선 적지 않는다.

    아무튼, 굉장히 중요하다고 생각.

     

    IEnumerator

    이건 유니티 내장은 아니고 C#이다.

    C#의 굉장히 강력한 기능...? 이라고 생각이 되는데 이를 활용하여 Coroutine을 할 수 있다.

    https://docs.unity3d.com/2020.3/Documentation/ScriptReference/Coroutine.html

     

    Unity - Scripting API: Coroutine

    How do you use documentation throughout your workflow? Share your experience with us by taking this survey. Coroutine class in UnityEngine / Inherits from:YieldInstruction / Implemented in:UnityEngine.CoreModule Description MonoBehaviour.StartCoroutine ret

    docs.unity3d.com

    이게 Coruntine

    사실 아직 정확하게 정의를 이해하진 못했다. C#을 제대로 배운적이 없다보니 개념이 희미하다.

    좀 더 자료를 찾아가며 봐야겠다.

     

    OnTriggerEnter

    https://docs.unity3d.com/2020.3/Documentation/ScriptReference/Collider.OnTriggerEnter.html

     

    Unity - Scripting API: Collider.OnTriggerEnter(Collider)

    OnTriggerEnter happens on the FixedUpdate function when two GameObjects collide. The Colliders involved are not always at the point of initial contact. Note: Both GameObjects must contain a Collider component. One must have Collider.isTrigger enabled, and

    docs.unity3d.com

    OnTrigger 다음에 Enter 가 오는지, Stay가 오는지 , Exit가 오는지에따라 충돌시기가 달라지는데 

    어쨌든 충돌에 관한 함수이다.

    인자로는 위 스크립트를 갖는 오브젝트에 충돌한 오브젝트의 Collider가 온다.

     

    오늘은 여기까지하고 내일 다시 자료 읽어본후 클리커게임제작해봐야겠다.