본문 바로가기

Unity 공부시작/Unity2D 게임 및 기능구현

유니티2D :: 랜덤 스킬 배정받기 < Action 이용 > 각 맵별로 사용할 수 있는 스킬들을 다르게 하고 싶은 경우, int형인 스킬 넘버를 Random.Range로 받아온 뒤에 Update()에서 계속 스킬 넘버를 검사하면서 특정 함수를 호출해주는 것은 스킬이 많으면 많을수록 성능이 떨어진다고 생각했다. 이를 해결하가 위해서는 스킬들이 모여있는 스크립트를 따로 두고, 플레이어의 스크립트에 함수 포인터를 둔 뒤 Start() 에서 그 함수 포인터에 특정 스킬 함수를 넣어준 뒤에 사용하면 된다. public Action skill; switch(skillNum) { case 1: skill = Skils.instance.Skil1; break; case 2: skill = Skils.instance.Skil2; break; case 3: skill = Skils..
유니티2D :: 오브젝트 원래 있던 위치로 돌아가기 Vector3.Lerp( (Vector3)현재 위치, (Vector3)타겟 위치, 속도 ); : 타겟 위치에 가까워질수록 속도가 느려짐 MoveTowards ( (Vector3)현재 위치, (Vector3)타겟 위치, 속도 ); : 일정한 속도로 움직임. 플레이어가 오브젝트의 아래를 지나갈 경우 떨어지고, 플레이어가 오브젝트의 범위에서 벗어나면 제자리로 돌아가는 것을 구현하였다. 매우 간단할 줄 알았던 기능이었는데 은근 시간이 많이 걸렸다. Vector3값은 float이라 그런지 == 를 사용할 수 없었다. Unity라 혹시 가능할까 했는데 내가 방법을 못찾은 건지 모르겠지만 소수점 아래까지 모두 같을 순 없었다. 구글링을 한 결과 맨 위에 써 놓은 것처럼 특정 좌표로 이동시켜주는 함수를 찾을 수 있었다..
유니티2D :: 애니메이션의 전환이 느린 경우 애니메이터의 한 스테이트에서 다른 스테이트로 넘어갈 때 조금 느리게 전환되는 경우가 있다. 이는 스테이트 간을 연결하는 Transition - Settings - Transition Duratio 를 줄여 보다 빠르게 전환시킬 수 있다. Transition Duratio는 다음 스테이트로 넘어가는 시간이라고 알고 있다.
유니티2D :: 대화 이벤트 구현 연습 https://www.youtube.com/watch?v=znhOiyMDe9g 위의 블로그를 보고 구현하였습니다. 쓰인 애셋들은 모두 유니티 에셋 스토어에서 무료로 받은 에셋들입니다. 캐릭터 sprite, 캐릭터의 말들이 쓰여질 Text, Text의 바탕이 될 Window 세 가지로 이루어져 있습니다. using System.Collections; using System.Collections.Generic; using UnityEngine; [System.Serializable] public class Dialogue { [TextArea(1,2)] public string[] sentences; public Sprite[] sprites; public Sprite[] dialogueWindow; }다이..
유니티2D :: 캐릭터 이동, 점프 및 애니메이션 구현 1. 이동 void Move() { Vector3 moveVelocity = Vector3.zero; // left if(Input.GetAxisRaw("Horizontal") 0) { moveVelocity = Vector3.right; sr.flipX = false; } transform.position += moveVelocity * movePower * Time.deltaTime; } 좌, 우 전환은 flipX으로 구현 2. 점프 void Jump() { if (!isJumping) return; rdb2.velocity = Vector3.zero; Vector3 jumpVelocity = new Vector3(0, jumpPower, 0); rdb2.AddForce(jumpVelocity, Fo..
Unity2D 기능 구현 :: 날아오는 화살 막아내기 1. prefab에 오브젝트 할당하기 1. 화살과 캐릭터의 주먹 충돌 OnTriggerEnter2D(Collider2D col) : Score 증가 2. 화살과 캐릭터 몸체 충돌 OnCollisionEnter2D(Collision2D col) : Hp 감소 이미지 파일들은 InFlearn 강의 의 수업 자료를 이용하였습니다. 수정) 싱글턴 오브젝트 이용