목록분류 전체보기 (86)
박민혁의 개발

게임에서 흔히 혼란 같은 디버프에 걸릴시 키보드 상하좌우 조작이 바뀌거나 어드벤쳐 게임 같은경우 특정 상황에 따라 키조작이 바뀌는 경우가 있다 오늘은 input system을 이용한 키조작 변경을 알아보자 방법1. 액션맵 전체를 바꾸기 다음은 뉴 인풋 시스템의 플레이어의 인풋 시스템이다 현재 플레이어는 w 는 up s는 down 좌우도 마찬가지 플레이어1은 w는 down s 는 up 좌우도 반대인 상태이다 즉 특정 상황에 난 액션맵을 플레이어에서 플레이어1로 바꿔 상하좌우를 반대로 하고 싶은것 playerInput = targetPlayer.GetComponent(); if (playerInput.currentActionMap.name == "Player") { playerInput.SwitchCurre..

자 오늘은 증강 만들기 특강을 해보려 합니다 모든 내용은 제 뇌피셜이며 틀릴 수 있습니다 근데 적용되는거 같으니까 맞을거 같아요 전 우선 증강의 종류 4가지 단순 수치 변화 증강 ex 스탯 - 공격력업,체력업, 특정 시점 발동 - 구르기 후 쿨타임 감소 , 공격 후 구르기 쿨타임 감소 ex 구르기 후 쿨타임 감소 , 공격 후 구르기 쿨타임 감소 오브젝트 생성형 - 조건마다 다르지만 크게 2가지로 나뉨 ( ) 1. 영구적으로 생성 되는 타입 - 불방패 ,힐오라 2. 잠깐 생성 되는 타입 (보통 특정 시점 발동과 혼합 됨) 특수 특수는 답이 없다 형식이란게 없음 (보통 스킬이 해당 되며 전혀 갈피를 못잡고 있음) PunPpc의 어느정도 지식이 있다면 아래 이미지의 함수 설명으로 바로 가셔서 변수 ,함수의 설..

유니티에서 부딪히는걸 처리하기 위해선 콜리전과 리지드 바디가 필요 하다 단 a 와 b 가 부딪힐때 a b 모두 콜리전을 가지고 있어야 하지만 1명은 반드시 리지드 바디를 가지고 있어야 충돌 판정을 처리 할 수 있다 . 그렇다면 리지드 바디는 누가 가지고 있어야 할까? 정답은 바로 동적으로 움직이는 물체가 가지고 있어야 한다 ex 플레이어 ,화살 ,몬스터 리지드 바디를 가지고 있지 않아야 하는물체 ex 나무 벽 돌 그러나 플레이어와 몬스터 모두 리지드 바디를 가지고 있다면 서로 부딪혔을때 서로 밀려나게 된다 이건 전혀 의도한 바가 아니다 더구나 이렇게 밀린 에너지는 보통 코드를 짤때 예상하지 않기에 플레이어는 몰라도 몬스터는 계속 그 밀리는 힘을 가지게 되고 자기가 이동하려는 힘 - 밀리는힘 =0 로 가만..
Random.insideUnitCircle Unity에서 제공하는 랜덤 벡터를 생성하는 함수 이 함수는 2D 공간에서 반지름이 1인 원 내부에 있는 랜덤한 점을 나타내는 2D 벡터를 반환 해줌. 반지름이 1인 원 내부에 있는 임의의 점을 랜덤하게 선택. 이 점의 x와 y 좌표를 가지고 있는 2D 벡터를 생성. 생성된 벡터의 길이는 1 이하. normalized를 하여 벡터를 정규화 해줘야함 정규화는 벡터 길이가 1 이어야 방향에 따른 이동 속도가 같아진다 (안하면 대각선 이동시 위로는 1속도 오른쪽으론 1.2 속도 로인해 오른쪽으로 좀더 많이 가는 현상이 발생함) Vector2 randomPosition = Random.insideUnitCircle; public class MoveDice : MonoB..

놀랍게도 생각보다 엄청 쉽다. 우선 new 인풋 시스템은 현재 무브는 wasd 룩은 마우스 포지션값 , 공격을 좌클릭 , 스킬 우클릭 , 구르기 스페이스바 , 리로드 r 로 받고 있다. 내 목표는 아래 그림과 같이 up이 w가 아닌 s로 만드는걸 상하좌우 다하는것!! 코드 public PlayerInput playerInput; void Start() { playerInput = player.GetComponent(); }// 플레이어 한테서 겟컴포넌트를 해오고 있는데 인풋시스템을 들고있는걸 플레이어로 바꾸면됨; private void A119()// 반전 공격방향 , 이동방향이 반대가되고 공체 대폭 증가 == 현재 이동방향 반대만 구현 { if ("Player" == playerInput.current..

사실 제목과 달리 오늘 내용은 스크립터블 오브젝트와 연관이 별로 없다 .. 현재 프로젝트는 csv파일로 증강(아이템개념)을 관리하고 있고 증강코드 (아이템코드)로 해당하는 클래스를 붙이거나 효과를 발동시키는 형식으로 작동중이다 나는 작성할대 그냥 csv파일내부 내용을 배열안에 넣어두는것과 큰차이가 없다고 생각 했고 오히려 csv파일로 만들고 불러온다는 과정을 추가해서 손해가 아닌지 생각을 했으나 코드를 바꿀시 반드시 빌드를 해야하지만 스크립터블 오브젝트 같은 경우 오브젝트값만 바꾸면 안전성 (코드를 건들시 실수가 발생할 경우 작동 x), 출시 재심사 ,빌드 등을 하지 않고 값만 바꿀수 있다는 장점이 있었던 것 쓰면서 불편하다고 생각했으나 다 이유가 있다 ~ 이말이야 ps 스크립터블 오브젝트는 데이터가 저..

아직 이미지를 따로 구하지 못했지만 색,모양을 조절할 예정 오늘 할것은 저 범위안에 있는 대상에게 힐을 해주기가 목표이다 우선 나는 콜리전 엔터와 콜리전 엑시트 밖에 몰랐다 그래서 코드를 짜려던 당시에 콜리전엔터, 콜리전 들어올때 힐하고 나갈땐 힐 안해야지 했었는데 이러면 빠르게 왔다갔다하면 엄청난 힐이 되기에 의도한 코드가 아니였다 OnCollision의 종류 1. OnCollisionEnter 2. OnCollisionStay 3. OnCollisionExit 검색을 하던 도중 콜리전스테이를 알게되었는데 이게바로 내가 찾던 들어와 있는중 이라면 의 코드이다 그래서 업데이트로 2초를 돌리고 콜리전스테이에서 2초를 0초로 만들며 힐을 해주는걸 생각했지만 찾아본 결과 콜리전스테이는 update보다 더 많이..

public class A3107 : MonoBehaviour { // Start is called before the first frame update int objSize;// 돌아가는 투사체 갯수 public float circleR=1f; //반지름 public float deg; //각도 public float objSpeed= 20f; //원운동 속도 public GameObject[] target; private void Start() { objSize = target.Length; } void Update() { deg += Time.deltaTime * objSpeed; if (deg < 360) { for (int i = 0; i < objSize; i++) { var rad = Mat..