분류 전체보기 (26) 썸네일형 리스트형 뱀서라이크 따라하기 - 플레이어 무기 장착 이번 시간에는 플레이어가 무기를 장착한 모습을 만들어 보도록 하겠습니다. 먼저 플레이어 모습에 손 모양이 올라가도록 만들어주고, 플레이어의 이동 방향에 따라 손의 방향도 바뀌도록 해 주고 플레이어가 가진 무기에 따라서 손에 들고 있는 무기의 모습도 바뀌도록 해주겠습니다. 먼저 플레이어 오브젝트 아래에 2d script -- triangle 을 만들어 이름을 Hand Left라고 지어주고, 플레이어의 적당한 곳에 가도록 위치시켜줍니다. 또한 z축으로 방향을 돌려 배치해줍니다. 반대손도 마찬가지로 만들어주고, 이번에는 z축을 돌리지 않고 놔두도록 하겠습니다. 이제 손의 방향 반전을 구현해보도록 하겠습니다. 먼저 c# 스크립트를 만들어 주고 이름은 hand라고 짓습니다. 아래가 그 스크립트의 코드입니다. us.. 뱀서라이크 따라하기 - 원거리 무기 만들기 이번 시간에는 원거리 무기를 만들어 보도록 하겠습니다. 먼저 가까이 있는 몬스터를 검색하기 위해 scanner 라는 c# 스크립트를 만들어줍니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Scanner : MonoBehaviour { public float scanRange; public LayerMask targetLayer; public RaycastHit2D[] targets; public Transform nearestTarget; void FixedUpdate(){ targets = Physics2D.CircleCastAll(transform.position, scanRan.. 뱀서라이크 따라하기 - 근접 무기 만들기 이번 글은 아래의 링크에 있는 글의 내용에서 이어집니다 https://unityfactory.tistory.com/17 저번시간에 이어서 근접무기를 만들어 보도록 하겠습니다. weapon 을 완성한 뒤, 실행을 시켜보면 플래이어의 주변에 붙어서 도는 무기를 확인할 수 있습니다. 무기와 플래이어간의 거리 차이가 없어서 몬스터에게 무기가 닿지 않습니다. 이 경우에는 무기의 위치에서 y축을 1로 바꿔주시면 해결이 됩니다. 그러고 나면 이제 몬스터와 근접무기가 닿으면서 몬스터들이 사라지는걸 볼 수 있습니다. 하지만 무기가 추가될 때마다 이걸 수동으로 조작해줄 수 는 없겠죠? 이제 자동으로 무기를 배치하기 위한 로직을 짜도록 하겠습니다. 만약 많은 수의 무기를 배치해야 한다면, 캐릭터의 주변 각도를 나누어서 배치.. 뱀서라이크 따라하기 - 소환레벨 적용하기 2번째 저번 글에 이어서 직렬화를 완성시켜보도록 하겠습니다. 먼지 직렬화란, 개체를 저장 또는 전송하기 위해서 변환을 하는 과정을 말합니다. [System.Serializable] public class SpawnData{ public int spriteType; public float spawnTime; public int health; } 간단히도, 대괄호안에 System.Serializable만 추가를 해주시면 직렬화를 완성할 수 있습니다. 이 과정을 거치고 나면 이제 스폰 데이터를 인스팩터창에서 확인하실 수 있습니다. 그 뒤 게임창에서 각 몬스터들의 스팩을 조정해줄 수 있습니다. 또한 코드를 이상태로 계속 진행할 경우에는 list rangeout오류가 뜨게 되는데, 이 오류도 고쳐보도록 하겠습니다. 먼저.. 뱀서라이크 따라하기 - 오브젝트 풀링 2번째 이번시간에도 오브젝트 풀링을 완성시켜보도록 하겠습니다. 먼저 플레이어 오브젝트의 하위 오브젝트로 빈 오브젝트를 만들어 주고 그 오브젝트의 이름을 Spawner라고 지어보도록 하겠습니다. 또한 스크립트를 만들어 이름을 Spawner라고 지어줍니다. 이제 그 스크립트 파일을 열어 코드를 짜주겠습니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Spawner : MonoBehaviour { public Transform[] spawnPoint; float timer; void Awake(){ spawnPoint = GetComponentsInChildren(); } void Update().. 뱀서라이크 따라하기 - 오브젝트 풀링 1 이번 시간에는 오브젝트 풀링을 해보도록 하겠습니다. 게임을 하다보면 많은수의 적이 몰려나올 때가 있는데요, 이때 모든 적들을 만들어주기에는 무리가 있겠죠. 그래서 저희가 사용할 것은 오브젝트 풀링 입니다. 먼저 저번시간에 만들었던 적 오브젝트들 중 모양이 다른 한놈씩만 놔두고 나머지 적들은 지워줍니다. 그 뒤 남아있는 적 오브젝트를 새로 Prefabs 폴더를 만들어 넣어주게 되면 오브젝트의 아이콘 색깔이 파란색으로 변하게 됩니다. 또한, 저 폴더의 오브젝트들의 크기를 바꾸거나 하면 저 오브젝트들이 화면에 여러개 복사되어 있을 때 다같이 적용이 된다는 장점이 있습니다. 또한, 오브젝트를 많이 만들고 지우고 하면 프레임에 좋지 않은 영향을 끼치는데, 그 문제를 해결하기 위해서 오브젝트 풀링을 사용하게 됩니다.. 뱀서라이크 따라하기 - 적 구현하기 2편 이번시간에도 적을 구현해보도록 하겠습니다 먼저 저번시간에 작성한 코드를 적 오브젝트에 넣어줍니다. 그리고 target 부분에 player를 넣어주고, 속도를 지정해주면 플레이어를 따라 움직이는 적의 모습을 볼 수 있습니다. 하지만 적들이 어느 방향으로 움직이던지 간에 보는 방향이 항상 고정되어 있다는 문제가 있는데요, 이를 고치기 위해서 스크립트에 내용을 추가해보도록 하겠습니다. void LateUpdate(){ spriter.flipX = target.position.x diffY){ transform.Translate(Vector3.right*dirX*40); } else if (diffX 뱀서라이크 따라하기 - 적 구현하기 이번시간에는 적을 구현해보도록 하겠습니다. 먼저 스프라이트 중 enemy라고 쓰여져 있는 스프라이트를 가져와, 계층창에 끌어다 놔 object를 만들어 줍니다. 그 스프라이트에 컴포넌트로 animator를 추가한 뒤, action - enemy에 들어있는 ac enemy0을 넣어줍니다 또한 몬스터가 그려지는 위치를 2번으로 잡아서 그림자보다 위로 올라오게 하고, 그림자도 추가해준 뒤 높이를 -0.45 해주시면 됩니다. 또한 몬스터가 중력의 영향을 받거나, 회전을 하면 안되기에 중력 배율을 0으로 해주고, z 축 방향으로 도는 것을 막아준다. 또한 플레이어와의 충돌 감지를 위해 capsule collider를 추가해줍니다 캡슐콜라이더의 크기를 조정해 준 뒤 적 오브젝트를 복사해줍니다 그 복사된 오브젝트에 .. 이전 1 2 3 4 다음