일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- C
- 백준
- c#
- KRAFTON JUNGLE
- pintos
- 크래프톤 정글
- 알고리즘수업-너비우선탐색2
- 알고리즘
- 유니티
- 이벤트 함수 실행 순서
- 핀토스
- project3
- TiL
- Unity
- 추상클래스와인터페이스
- 다익스트라
- BFS
- 연결리스트
- 크래프톤정글4기
- 파이썬
- kraftonjungle
- 네트워크
- 크래프톤정글
- 전쟁-전투
- 티스토리챌린지
- anonymous page
- 오블완
- 크래프톤 정글 4기
- User Stack
- 4기
- Today
- Total
목록전체 글 (154)
말감로그
DayCycle하루 24시간이 지나면 다음 날로 변경이 되도록 DayCycle을 만들 것이다.실제 시간 10초가 지나면 게임 상 시간은 10분이 흐르도록 설정 할 것이고, 24시가 되면 요일도 변경하게 할 것이다.Fade In / Fade Out 효과를 줘서 시간의 흐름을 표현할 것이다.using System;using System.Collections;using TMPro;using UnityEngine;using UnityEngine.UI;/* 시간 흐름 관리*/public class TimeManager : MonoBehaviour{ public TextMeshProUGUI dayText; public Image fadeImg; private float timePerGameMinut..
아이템 리팩토링 확장하기 현재는 RICE_SEED와 TOMATO_SEED 아이템 뿐이다. 하지만 추후에 물뿌리개, 도끼 등등 더 많은 아이템을 확장하기 위해서는 스크립트를 변경해야 한다.아이템 데이터를 정의하기 위해 ScriptableObject를 사용한 클래스를 만들어준다. ScriptableObject는 Unity에서 데이터를 관리하고 저장하는 데 사용되는 클래스로, 일반적으로 게임의 상태를 저장하지 않고 데이터 자산(assed)처럼 여러 객체에서 공통으로 사용할 수 있는 데이터를 정의할 때 유용하다. 우선 ItemData 스크립트를 생성한다. [CreateAssetMenu]는 Unity의 에디터에서 ScriptableObject를 쉽게 생성할 수 있도록 도와주는 속성이다.// fileName =..
인벤토리 시스템 인벤토리 클래스를 정의해서 인벤토리 시스템을 관리할 것이다.//Inventory.cs[System.Serializable]public class Inventory{ public List slots = new List(); [System.Serializable] public class Slot { public CollectableType type; public Sprite icon; public int count; public int maxAllowed; public Slot() { type = CollectableType.NONE; count = 0; ..
플레이어 애니메이션은 Blend Tree를 사용해봤다. Blend Tree 애니메이션은 여러 애니메이션 클립을 하나의 트리에 넣고, 캐릭터의 속도, 방향, 각도 등을 기준으로 자동으로 애니메이션을 혼합하고 전환할 수 있다. 전체적인 애니메이션은 이런식으로 관리해놨다. 각 애니메이션 트리를 생성해주고 해당 애니메이션 블랜드 트리 안에 Front, Back, Left, Right 애니메이션을 연결해 준뒤, 파라미터를 생성해 각 애니메이션에 맞게 값을 주면 해당 값이 변할 때마다 각 애니메이션으로 실행되게 된다.Horizontal이 아닌 LastHorizontal로 준 이유는 애니메이션이 이동하다 멈추면 정면을 바라보게 되어있어서, 마지막 누른 키를 저장 후 그 방향을 바라보게 하였다. public clas..
통통 튀는 효과를 주기 위해 PhysicsMaterial 을 생성해서 추가한다.Mesh Object > Trail Render 컴포넌트 추가폭발 파티클 자식 오브젝트에 추가 코루틴을 사용해서 수류탄 터지는 효과를 구현하고 SphereCastAll 레이캐스팅을 사용하여 수류탄과 충돌한 모든 오브젝트(Enemy)를 가져와 넉백 효과를 준다.void Start(){ StartCoroutine(Explosion());}IEnumerator Explosion(){ yield return new WaitForSeconds(3f); //물리적 속도를 모두 0으로 초기화 // rigid.velocity = Vector3.zero; // rigid.angularVelocity = Vector..
플레이어 회전플레이어가 오브젝트에 닿으면 혼자 빙글빙글 도는 현상이 있었는데, 이것은 외부 충돌에 의해 리지드바디의 회전 속력이 발생해서 도는 것이다.그래서 angulerVelocity - 물리 회전 속도 를 0으로 지정하여 스스로 돌지 않게 한다.void FixedRotation(){ // 물리 회전 속도를 0으로 지정하면 스스로 돌지 않게 됨. rigid.angularVelocity = Vector3.zero;} 충돌 레이어 설정Layer Collision Masks - 레이어들의 상호 간 충돌 설정 탄약은 탄약만 충돌, 플레이어 총알은 플레이어 무시 하도록 설정해준다. 플레이어 벽 관통 방지RayCast로 벽 오브젝트를 감지하여 벽을 관통하지 못하게 한다.void StopToWall()..
유니티를 놓은지 너무 오래된거 같아서 골드메탈 유튜브를 보고 다시 익히고 있다. 0.아이템 타입 아이템의 종류는 총 5가지이므로, enum으로 ItemType을 열거해준다. transform.Rotate()를 이용하여 아이템을 회전시켜준다.public class Item : MonoBehaviour{ public enum ItemType { Ammo, Coin, Grenade, Heart, Weapon }; public ItemType itemType; public int value; void Update() { transform.Rotate(Vector3.up * 20 * Time.deltaTime); }} 1. 무기 입수 플레이어가 무기를 먹으면(OnT..
데이터의 직렬화메모리를 디스크에 저장하거나 네트워크 통신에 사용하기 위한 형식으로 변환하는 것을 말한다.역직렬화반대로 디스크에 저장한 데이터를 읽거나, 네트워크 통신으로 받은 데이터를 메모리에 쓸 수 있도록 다시 변환하는 것을 말한다. 직렬화는 왜 필요한가? 값 형식 데이터(Value Type) 은 우리가 흔히 선언해서 사용하는 int, float, char 등 값 형식 데이터들은 스택에 메모리가 쌓이고 직접 접근이 가능하다.참조 형식 데이터(Reference Type)은 C#에선 Object 타입 혹은 C++에서 포인터 변수들이 여기에 해당한다. 해당 형식의 변수를 선언하면 힙에 메모리가 할당되고 스택에서는 이 힙 메모리를 참조하는(힙에 메모리 주소를 가지고 있음) 구조로되어있다. 이 두 가지 데이터 ..
유니티의 두 공간 좌표Local Space각각의 개별적인 게임 오브젝트의 지역 공간을 의미한다. 각 오브젝트는 자체적인 좌표계를 가지며, 이 좌표계를 기준으로 위치, 회전 및 크기가 정의된다. World Space전체 게임 세계를 의미한다. 모든 게임 오브젝트는 월드 공간 내에서 상대적인 위치, 회전 및 크기를 가지고 있다. 월드 공간은 모든 로컬 공간의 기준이 되며 , 모든 오브젝트는 월드 공간으로 변환될 수 있다. 두 공간 사이의 변환이 필요한 이유객체가 위치하고 움직이는 방식에 따라 다르게 처리되어야 하는 상황이 많기 때문이다. 로컬에서 월드로 변환transform.TransformDirection(Vector3 direction) 월드에서 로컬로 변환transform.InverseTransfor..