Humility

아무리 노력해도 최고가 되지 못할 수 있다⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀그럼에도 노력하는자가 가장 겸손한 것 아닌가

공부하는 블로그
반응형

전체보기 79

[Unity] 유니티 C#) 자료구조 딕셔너리(Dictionary)

딕셔너리는 왜 사용할까?딕셔너리는 많은 데이터안에서 특정한 한 데이터를 찾을때 빛을 발한다.예를 들어, RPG게임에서 아이템을 찾는다고 가정해보자List itemList = new List() { "A", "B", "C" };string findInList = itemList.Find(x => x == "B"); // 전체 순회 필요예시에는 A,B,C 3가지만 들어있지만 RPG게임에는 수천, 수만개의 아이템이 있을 것이다.그 중 하나의 아이템을 찾는다고 하면, 순차적으로 0번부터 탐색을 시작할 것이다.이는 매우 비효율 적이다. 이때 딕셔너리로 만들면 어떨까?Dictionary fastLookup = new Dictionary();fastLookup.Add(1, "A");fastLookup.Add(2, "..

유니티/문법 2024.10.28

[Unity] 유니티 C#) 자료구조 배열(Array),리스트(List)

배열과 리스트를 왜 사용할까?// 1.public class ScoreTest1 : MonoBehaviour{ // 학생 점수를 각각 변수로 만든다면... int score = 85; Debug.Log(score)}// 2.public class ScoreTest2 : MonoBehaviour{ int score1 = 85; int score2 = 85; int score3 = 85; int score4 = 85; int score5 = 85; // .... score가 100개가 넘어간다고 생각해보자... Debug.Log(score1); Debug.Log(score2); Debug.Log(score3); Debug.L..

유니티/문법 2024.10.28

[Unity] 유니티 C#) FPS 주무기를 어떻게 구현할까? ( 저격총 )

일반적인 저격총 발사방법은 사실 돌격소총과 크게 다를바가 없다.단지, 총의 발사주기나 반동 등 몇가지 설정해놓은 변수값만 바꿔주면 되기 때문이다.그럼 어떤 특징이 있는지 생각해보자. 저격총의 특징1. 줌 저격총은 배율기를 사용해 먼 거리에 있는 적을 조준하고 사격하는데 의의가 있다. 때문에, 줌 기능을 구현해야한다. 2. 관통저격게임으로 유명한 스나이퍼엘리트 시리즈를 해보면 적 2명이 1자로 서있을 때, 총을 쏴 앞에 서있는 적을 맞추면 총알이 관통해 뒤에 있는 적까지 처치할 수 있다. 저격총은 다른 총에 비해 무겁고, 탄약 또한 강력하기 때문에 이러한 설정은 괜찮다고 생각한다.( 아쉽게도 미디어 자료는 찾을 수 없어 삽입할 수 없었다...)     1. 변수 설정public class Sniper :..

[Unity] 유니티 C#) FPS 주무기를 어떻게 구현할까? ( 샷건 )

이번엔 샷건을 구현해보자.샷건은 다른 총들과 달리 생각해야할 점이 2가지가 있다.1번째: 총 발사시, 쉘이 퍼져 나간다.보통의 총들은 발사시에 한발씩 나가지만 샷건은 한번 발사시에 여러개의 쉘로 퍼져서 나간다 2번째: 장전 시 한발씩 장전이 된다.보통의 총들은 장전시에 탄창을 교환하는 방식으로 한번에 장전되지만 샷건은 한발씩 장전되어야 한다 그럼 이제 샷건을 구현해보자. 1. 변수 설정public class ShotGun : MainWeapon{ private bool canReset = true; // 처음에만 총알 넣어주기 위해 private float nextFireTime; // 다음 발사 주기 public TextMeshProUGUI ammoTxt; // 탄약 UI 표시 ..

[Unity] 유니티 C#) FPS 주무기를 어떻게 구현할까? ( 돌격소총 )

이제 본격적으로 주무기를 만들어보자 1. 변수 할당public class Rifle : MainWeapon{ private bool canReset = true; // 처음에만 총알 넣어주기 위해 private float nextFireTime; // 다음 발사 주기 protected override void Awake() { base.Awake(); maxLoadedAmmo = 30; // 장전될 수 있는 탄약 initializeAmmo = 180; // 총기 최대 탄약 damage = 27; // 데미지 bulletRange = 50f; // 총알 발사 거리 fireRate = 0.06f; // 총알 발사 주기 recoilX = 0.2f; /..

[Unity] 유니티 C#) FPS 주무기를 어떻게 구현할까? ( 주무기 클래스 )

FPS 게임에는 다양한 총기들이 있다대표적으로 돌격소총, 산탄총, 저격총 이 3가지가 떠올랐다. 그럼 어떻게 설계할지 생각해보자 1. 구조 설계주무기들의 부모가 되는 클래스각 주무기들의 클래스실질적으로 총을 발사하는 클래스2. 필요한 변수탄약최대 장탄수, 장전 탄약, 남은 탄약, 데미지데미지, 총알 사거리, 발사 주기반동좌우반동, 수직반동, 반동 회복속도재장전재장전 시간, 장전중 확인정조준정조준 속도, 줌 정도탄퍼짐탄 퍼짐 정도 3. 필요한 로직슈팅 : 마우스 왼쪽 키를 눌렀을때, 총알 발사장전 : 장전되어있는 총알이 없거나 R키를 눌렀을 때발사 : 발사 방법정조준 : 마우스 오른쪽 키를 눌렀을 때 정조준주무기를 만드려고 생각 했을 때, 이정도 생각이 들었다.개발을 진행하면서 빼야할 부분은 빼고 추가할 ..

[Unity] 유니티 C#) 투척무기 구현을 어떻게 할까? ( 던지기 )

이제 마지막이다.. 어느새 또 새벽이다... 1. 먼저 궤적에 맞춰 날아가야 하므로 궤적 구현 부분에 쓰였던 값들을 가져오자 public void Throw(Transform _firePos) { Vector3 _velocity = _firePos.forward * throwForce; Vector3 _localStartPos = new Vector3(0, 0.5f, 1f); // 카메라 기준으로 궤적 시작 위치 설정 Vector3 _position = _firePos.TransformPoint(_localStartPos); } 그 다음은 매우 간단하다 ( 매우 어려운 작업은 궤적에서 다 했기 때문이다 ) 2. 위치를 대입해주고 리지드바디를 가져와 속도를 대입해준다publi..

[Unity] 유니티 C#) 투척무기 구현을 어떻게 할까? ( 궤적 표시 )

지난번에 이어서 투척무기 구현을 마무리 하려고 한다. 우선 마우스 왼쪽키를 누르고 있을 때, 궤적 표시를 해주자.궤적을 표시해주는 것은 3가지의 투척무기가 모두 공통적일 것이므로3가지의 부모가 되는 ThrowingWeapon 클래스에서 정의해주자 1. 우선 궤도에 관한 변수 설정과 라인 렌더러를 설정해보자public abstract class ThrowingWeapon : MonoBehaviour{ public float throwForce = 10f; // 던지는 힘 public LineRenderer trajectoryLine; // 궤적 라인 int trajectoryLinePoint = 40; // 궤적 포인트 갯수 ..

[Unity] 유니티 C#) 투척무기 구현을 어떻게 할까? ( 폭발 )

내가 만들고 싶었던 투척무기는 위 사진과 같이 배틀그라운드의 투척무기 같은 느낌이였다그렇다면 어떻게 스크립트를 작성하면 좋을까?  1.  구조 설계플레이어 인풋 클래스 기본 투척 무기 클래스 정의투척 무기 하위 클래스 계획 (Grenade, Flashbang, SmokeShell 등) 2.  필요한 변수  어떤 종류의 투척 무기가 필요한가?                  수류탄, 연막탄, 섬광탄 각 무기의 공통특성은 무엇인가?                       폭발 반경,  폭발 시간 등투척 메커니즘은 어떻게 작동해야 하는가?        궤적 표시, 던지는 힘, 마우스 각도 등 3. 필요한 로직기본 메서드 구현투척 매커니즘폭발 로직특정 무기 클래스 구현투척무기를 만들려고 했을 때, 이정도 생각을 ..

반응형