3D 쿼터뷰 액션게임 - 수류탄 구현하기 [유니티 기초 강좌 B47]

  Рет қаралды 21,438

Goldmetal

Goldmetal

Күн бұрын

Пікірлер: 146
@islandnew4403
@islandnew4403 4 жыл бұрын
진짜 초심 안잃고 열심히 영상 올리는 분
@danielchoi7108
@danielchoi7108 4 жыл бұрын
일 마치고 집에 오니 강좌가 올라와있어 정말 행복합니다. 감사합니다
@ysnara486
@ysnara486 Жыл бұрын
여기까지 잘 따라왔더니, 과일나무 수확 기능도 완성했어요! 혼자였다면 상상도 못할 진도입니다 ㅋㅋ 정말 감사해요. 다음 진도도 화이팅해서 진행하겠습니다
@sun1205
@sun1205 8 ай бұрын
감사합니다. 너무 재미있고 슬슬이해도 되기시작합니다.
@jamespark5823
@jamespark5823 2 жыл бұрын
강의가 정말 최고에요!!!!
@minjee_K
@minjee_K 3 жыл бұрын
늘 좋은 강의 감사합니당
@pyeongmin1231
@pyeongmin1231 4 жыл бұрын
오늘도 좋은 강의 감사합니다ㅎㅎ~
@pyeongmin1231
@pyeongmin1231 4 жыл бұрын
저 퀴드책션 팩에서 오브젝트를 불러오면 하얀색으로 바뀌는데 뭐땜에 그러는 건가요?
@pyeongmin1231
@pyeongmin1231 4 жыл бұрын
아닙니다 고쳤네요 ㅎㅎ
@muhadojun
@muhadojun 2 жыл бұрын
펑~~! 잘 터지고 리엑션 좋네요 ^^ .. 이런 기능까지 강좌를 감사합니다. ~
@simsimiMONSTER
@simsimiMONSTER Жыл бұрын
Throw Grenade에 콜라이더랑 리지드바디 모두 있어도 굴러가지 않는 분들은 Mesh Object에도 콜라이더를 넣어보시길 바랍니다.
@Chogeulring
@Chogeulring 4 жыл бұрын
광역공격이라니 응용만 잘하면 다른것도 구현가능하겠네요 감사합니다!
@minjee_K
@minjee_K 3 жыл бұрын
혹시 수류탄에서 out of index 에러가 나시는 분이 있다면! hasGrenades 는 최대 4까지 가능하기 때문에 hasGrenades = 4 일때 grenades[hasGrenades ].SetActive(true); 를 실행하면 out of index 오류가 납니다! 인덱스로 -1이 들어가면 어떻게 되는지는 잘 모르겠지만 grenades[hasGrenades -1].SetActive(true); 로 바꾸면 정상작동하네요!
@JCSong-eh1qm
@JCSong-eh1qm 3 жыл бұрын
늦었지만 열심히 보고 있습니다~ 이렇게 지식을 나눠주셔서 감사합니다.
@argolant
@argolant 4 ай бұрын
점점 신경써야 하는 부분이 늘어나서 어렵지만 재밌네용
@NB-up8fs
@NB-up8fs 3 жыл бұрын
항상 감사히 잘 보고 있습니다.
@NB-up8fs
@NB-up8fs 3 жыл бұрын
주말 잘 보내세요
@Joohyunsang
@Joohyunsang 3 жыл бұрын
이번 회차도 정말 잘봤습니다!! 감사합니다:)
@와비사비룸물질보다정
@와비사비룸물질보다정 Жыл бұрын
수류탄 피격을 Enemy 쪽에 넣어서 처리하는건 뭔가 범용성이랑 확장성이 떨어지는 느낌이 드네요 공격 피격을 따로 스크립트로 분리해내서, 범위피격넉백 함수로 좀더 제네릭하게 할 수 있을 것 같습니다
@BroK2025
@BroK2025 2 жыл бұрын
영상 잘보고 있습니다!! 폭탄이 한번에 4개가 나가가서 당황 했었는데 GetButton 으로 해버렸더군요 ㅋㅋ
@DungeonsSlimes
@DungeonsSlimes 2 жыл бұрын
"최고의 강의"
@와비사비룸물질보다정
@와비사비룸물질보다정 Жыл бұрын
수류탄 장착 및 인터렉션 부분 제작은 강의 내에 스킵되어 있어서 강의만 따라오신분들은 중간에 오류가 생기는데 잘 따라왔다면 스스로 해결하실 수 있습니다
@wgj5700
@wgj5700 4 жыл бұрын
너무 멋있는 구현을 해주셔서 감사합니다
@ANDAMIR0
@ANDAMIR0 4 жыл бұрын
언제나 감사합니당
@날드-i9t
@날드-i9t 11 ай бұрын
19:25 freezeroatation x축 z축 체크했을경우 이부분만 회전돌게 하는법
@안안-u5s
@안안-u5s 3 жыл бұрын
영상 감사합니다.
@telun_project
@telun_project 4 жыл бұрын
대단하십니다,.
@wowmedia2154
@wowmedia2154 7 ай бұрын
Grenade는 value를 몆으로 해주어야 하나요? weapon이 아닌 grenade로 했는데 value가 weapon이랑 겹쳐서요
@goldmetal
@goldmetal 7 ай бұрын
태그로 구분되서 value는 0으로 두셔도 될겁니다
@초코맛누룽지
@초코맛누룽지 4 жыл бұрын
하하 누구보다 빠르게 남들과는 다르게
@junghwanryu1188
@junghwanryu1188 4 жыл бұрын
영상 잘봤습니다. 우와 엄청 복잡하네요. 저기에 쓰이는 용어들은 다 외우고 쓰시는건가요?! 굉장하고 흥미롭네요! 혹시 2d도 저런식으로 만드는건가요?
@구조
@구조 4 жыл бұрын
@Unknown 감사합니다!
@이세돌화이팅-p9o
@이세돌화이팅-p9o 4 жыл бұрын
안녕하세요 열심히 시청중입니다. 여태 잘 되다가 Grenade() 만들고 실행을 하면 플레이어가 수류탄 투척하지않고 제자리에 수류탄을 놔둔 뒤에 플레이어가 공중으로 점프하여 날라갑니다ㅠ 공중으로 점프하여 날라갈때 Fire2 버튼을 눌리면 또 정상적으로 Raycast가 정상적으로 작동되며 수류탄 투척을 하네요ㅠ 스크립트를 눈 씻고 봐도 모르겠어요 디버그 로그 해도 정상적인 로그가 뜨긴해요
@goldmetal
@goldmetal 4 жыл бұрын
수류탄이랑 플레이어랑 서로 충돌해서 그렇습니다. 수류탄 레이어를 따로 만든뒤 Edit > Project Settings > Physics > Collision Matrix에서 서로 충돌하지 않도록 체크 해제해보세요
@이세돌화이팅-p9o
@이세돌화이팅-p9o 4 жыл бұрын
@@goldmetal 아 그 방법을 생각못했네요! grenade가 발사 되는 위치를 플레이어의 위치에서 + 벡터3 포워드 *2f로 하니 해결됐어요 다음엔 골드메탈님 방법으로 해보겠습니다 답변 감사드려요
@겜쟁이독사
@겜쟁이독사 2 жыл бұрын
ㅜㅜ 폭탄에 적이 안 맞아서 계속 찾는데 코드에 "Enenmy"라고 해놓은;; ㄷㄷ;; 이거 때문에 한 시간을 헤메는;;; ㄷㄷ;;;; 이놈의 "Enenmy"
@goldmetal
@goldmetal 2 жыл бұрын
게임 개발에는 항상 오타 함정이 도사리고 있지요 🥴
@날드-i9t
@날드-i9t 11 ай бұрын
13:05 수류탄 안터진 이유 스크립트를 하이어키에 넣고 프리팹꺼 플레이어에 넣어서
@u.tube_ska
@u.tube_ska 4 жыл бұрын
너무 도움되고 있습니다! 도움되는 만큼 궁금한것도 많네용 이번 쿼터뷰강의에서 오브젝트 풀링을 안하시는 이유는 따로 있나요??
@goldmetal
@goldmetal 4 жыл бұрын
사실 오브젝트 풀링이 완전 기초단계에선 다루기엔 조금 그렇기도 하고 아직 프로젝트가 완성 단계가 아니라서 풀링을 바로 도입하기에도 타이밍이 맞지 않습니다.
@조커카드-k1u
@조커카드-k1u Жыл бұрын
9:52초 처럼 해놨는데 플레이어가 수류탄을 입수가 할수가업던데 어디가 문제인가여?
@goldmetal
@goldmetal Жыл бұрын
수류탄 아이템 먹는 부분은 이전 강의 B40에서 끝나야 하는 부분입니다. kzbin.info/www/bejne/q2OnfYKXrpqihZo 안먹어진다면 IsTrigger가 있는 콜라이더가 있는지 그리고 Item 태그 체크되어있는지 확인해주세요.
@intimeart8384
@intimeart8384 3 жыл бұрын
수류탄이 하늘로 날라가고 안내려옵니다
@goldmetal
@goldmetal 3 жыл бұрын
수류탄의 리즈드바디에 Use Gravity 체크되어 있는지 확인해보세요
@enjoyingman1
@enjoyingman1 4 жыл бұрын
내일 공부해야지~~
@송준호-r3y
@송준호-r3y Жыл бұрын
수류탄을 모두 만들고 난 후 코드에도 오류가 없이 실행도 되고 똑같이 한글자씩 확인했는데도 불구하고 fire2로 마우스 우측키를 누르면 수류탄이 안 나타납니다. 혹시나 해서 input manager에서도 fire를 확인해 봤지만 잘 되있었고 gDown으로 코드 또한 적혀져 있는데 게임 실행 후 수류탄을 습득한 후 반응하는지 확인(hasGrenades)까지 했는데도 불구하고 마우스 우측키만 안 먹힙니다 어떻게해야 할까요?
@송준호-r3y
@송준호-r3y Жыл бұрын
다음 날 마음을 다 잡고 다시 처음부터 적었더니 잘 됐습니다. 일시적인 오류였던 것 같습니다.다음에도 이런 일이 일어나면 안될텐데..
@goldmetal
@goldmetal Жыл бұрын
원래 게임 개발이라는게 그렇습니다. 이런 경우를 스스로 잘 해결하시다보면 노하우가 쌓여서 나중에는 뚝딱해결하고 넘어가는 자신을 보실 수 있을거에요~
@B6jePV61
@B6jePV61 2 ай бұрын
휴 쉽지 않다..ㅋㅋㅋ
@nelnel0718
@nelnel0718 Жыл бұрын
안녕하세요! 최근에 영상 보기 시작해서 B47까지 무사히 따라왔습니다. 이번 B47 영상에서 알려주신 것도 큰 오류 없이 진행을 하였으나, 이상한? 궁금한 점이 생겨 질문 댓글 남깁니다. Player의 위치를 바꾼 후(Player만 이동) 수류탄을 획득하면(먹으면) 플레이어 몸 주변에서 수류탄이 공전하는 것이 아닌 떨어진 만큼의 거리?에서 공전을 하는데, Grenade Group을 Player에 고정시킬 수는 없을까요? 아니면 알려주셨는데 제가 놓친 것일까요? Player의 위치를 임의로 바꾸게 되면 그대로 임의의 위치 만큼 Grenade Group도 이동 되도록 하고 싶습니다. (문제없이 딱 붙여놓고 싶음) *Player와 Grenade Group 묶어서 함께 이동하면 변함없이 잘 공전 합니다. 혹시나 저의 문제일 것 같아 Orbits 스크립트의 내용도 함께 남깁니다. public class Orbit : MonoBehaviour { public Transform target; public float orbitSpeed; Vector3 offSet; void Start() { offSet = transform.position - target.position; } void Update() { transform.position = target.position + offSet; transform.RotateAround(target.position, Vector3.up, orbitSpeed * Time.deltaTime); offSet = transform.position - target.position; } } 좋은 영상 너무 감사드립니다. 최근에 뱀서라이크 영상도 올라오고 있는 것을 확인하고 있는데, 그것도 만들어 볼 생각에 너무 신나하고 있습니다!
@goldmetal
@goldmetal Жыл бұрын
쉽게 하려면 Group만 Rotate() 사용하면 되긴 합니다. 이 강좌에서는 RotateAround의 사용법을 익히고자 내용이 복잡하게 구성되었으니 참고바랍니다. 참고로 Rotate() 방식과 RotateAround()방식을 겉으로 비교하면 조금 차이가 있습니다. (전자는 수류탄이 통째로 돌아가는 모양이라면 후자는 위치만 돌아가는 느낌)
@nelnel0718
@nelnel0718 Жыл бұрын
@@goldmetal 답변 감사합니다!
@HaroldKang77
@HaroldKang77 Жыл бұрын
안녕하세요~ 골드메탈님~ 지금까지 잘 보면서 따라 왔는데 갑자기 문제가 발생하네요. 17분 쯤, RaycastHit 배열에 피격되는 enemy 정보를 저장해서 Enemy 스크립트의 HitByGrenade() 함수로 데미지를 주는 부분에서 막혔습니다. 외부 함수를 가져오는 것에서 에러가 발생 하는것 같습니다~ ㅜ.ㅜ 피격 후 rayHits[0] 배열 디버그 찍어보면 'object'라고 나오는 것 보니 정보는 들어간 것 같은데 잘 모르겠어요~ ㅜㅜ
@goldmetal
@goldmetal Жыл бұрын
에러 메세지가 어떤 메세지인지 확인해보세요. 잘 모르시겠다면 구글번역기에 돌리셔도 되고, 에러메세지의 마지막 부분인 (00,00) 에러 위치를 확인하셔서 해당 변수를 살펴보시면 됩니다. 정모르시겠다면 여기에 붙여주시면 확인 드리겠습니다.
@HaroldKang77
@HaroldKang77 Жыл бұрын
@@goldmetal 어제 그렇게 볼때는 안 보이더니 지긋지긋한 오타였어요 ㅜㅜ layermask가 작동 안 하길래 레이어 번호로 했는데 그것도 이상하더니, 오늘에서야 레이어 숫자를 비트연산자로 넣어야 한다는 걸 알았습니다. 이래저래 두 가지 방식 모두 작동하네요.. ㅎㅎ;; 감사합니다~
@bkay7876
@bkay7876 3 жыл бұрын
Assets/5Script/Player.cs(70,9): error CS0103: The name 'Interation' does not exist in the current context void Update() { GetInput(); Movement(); FollowPlayer(); Jump(); Grenade(); Attack(); Reload(); Dodge(); Swap(); Interation(); } 이렇게 어택위에 수류탄로터함수를썼는대 갑자기 어택을포함한 장전 도지 스왑 먹기에 빨간색중이떠요
@goldmetal
@goldmetal 3 жыл бұрын
Interation 함수가 선언되지 않았답니다. 작성하신 함수 이름 대소문자 철자 같은지 확인해보세요
@bkay7876
@bkay7876 3 жыл бұрын
@@goldmetal interation말고도다빨간줄이에요
@goldmetal
@goldmetal 3 жыл бұрын
@@bkay7876 문법상 문제가 있는겁니다 윗부분쪽으로 괄호 () 혹은 중괄호 {} 짝이 안맞는 부분이 있는지 확인하시고 세미콜론; 빠진 곳이 있는지도 살펴보세요
@klyiknopx932
@klyiknopx932 3 жыл бұрын
공부를 해보고 있는데 2챕터로 투척하는 것까지 만들어봤는데 여기에서 수류탄을 던지면 영상에선 일직선으로 쭉 가는데 저는 수류탄이 바닥을 뚫는 원형 패턴으로 빙글빙글 돌아가면서 앞으로 가네요. 어떤 것이 문제일까요 ㅠㅠ
@goldmetal
@goldmetal 3 жыл бұрын
수류탄 프리펩 만들 때 매쉬를 가지고 있는 자식 오브젝트의 지역위치(LocalPosition)이 (0,0,0)이 아닐 수 있습니다. 프리펩 여서서 확인해보세요.
@noble3138
@noble3138 2 жыл бұрын
질문입니다. 9:40 부분인데요. 프리펩에 던지는 수류탄을 저장을 했는데 프리펩의 수류탄을 배치해도 플레이어가 안먹고 심지어 관통도 합니다. 혹시나해서 이미 전시간에 배치한 수류탄 4개들을 먹어보고 마우스 우클릭을 사용했는데 던지지도 못하고 있습니다. 왜그런걸까요? (스크립트 에러는 없었습니다.)
@goldmetal
@goldmetal 2 жыл бұрын
수류탄 아이템의 영역담당 콜라이더가 Trigger로 되어 있는지 확인하시고 태그도 설정되어 있는지 확인해주세요
@noble3138
@noble3138 2 жыл бұрын
@@goldmetal 아 뭣땜에 그렇나 햇더니 업데이트 함수를 빼먹는 실수를 자꾸하네요 ㅠㅠㅠ 항상 업데이트 함수도 체크 해봐야하는 습관을 가져야겠어요 감사합니다
@작곡가보빈
@작곡가보빈 Жыл бұрын
안녕하세요 구독하고 너무 감사히 잘 보고있습니다. 수류탄의 데미지를 스크립트 내에서가 아니라 수류탄 프리팹에서 퍼블릭 변수로 조정하고싶은데요, 이럴경우 에너미가 받는 수류탄데미지를 에너미 스크립트에 int gHit; 그리고 수류탄 스크립트에 public int gDamage; 이라고 선언해두고, 다시 애너미 스크립트로와서 void Awake(){ gHit = GetComponent().gDamage;} 로 초기화하고 데미지 숫자대신 gDamage를 썼는데 왜 작동을안하는지모르겠습니다ㅠ 혹시뭐가잘못되었을까요ㅠ
@goldmetal
@goldmetal Жыл бұрын
int같은 Primary type은 값 복사입니다. gHit를 바꾼다고해도 gDamage는 변동이 없지요. 바꾸시려면 Grenade myG;이렇게 선언 후 초기화 하고 데미지를 변경할 때 myG.gDamage = 이렇게 하면 되니 참고 바랍니다
@작곡가보빈
@작곡가보빈 Жыл бұрын
@@goldmetal 아직 코딩도 초보라 이해가 쉽진 않지만 방법을 알려주셔서 정말 감사합니다! 오늘 컨디션이 안좋다는 글 보았는데 빠른 회복 하시길 바래요 늘 감사합니다!
@user-uw9lf4xw4l
@user-uw9lf4xw4l 2 жыл бұрын
안녕하세요 좋은 강의 감사합니다!! 다름이 아니라 수류탄을 던질 때 잘 던져지지만 폭발 이펙트가 나오지 않아서요.. 그냥 던저서 굴러가기하고 이펙트는 나오지 않습니다. 해결방법이 있나요?? 감사합니다
@goldmetal
@goldmetal 2 жыл бұрын
던져지는 수류탄 프리펩에 이펙트 변수가 초기화 되어있는지 인스펙터 창 살펴보셔야 겠습니다.
@I_am_jake1104
@I_am_jake1104 2 жыл бұрын
20:43에 Assets\QuarterView 3D Action BE5\Scripts\Grenade.cs(29,52): error CS0122: 'Enemy.HitByGrenade(Vector3)' is inaccessible due to its protection level 라고 오류가 떠요
@I_am_jake1104
@I_am_jake1104 2 жыл бұрын
아 public void인데 void만 썼네요 ㅎㅎ
@im.g5699
@im.g5699 2 жыл бұрын
안녕하세요!! 영상 잘 보고 있습니다. 수류탄이 바닥에 닿으면 폭발하게 할 수는 없을까요?? 어렵네요.ㅠㅠ
@goldmetal
@goldmetal 2 жыл бұрын
Explosion 함수를 OnCollisionEnter 이벤트 함수에서 호출해주시면 됩니다.
@im.g5699
@im.g5699 2 жыл бұрын
@@goldmetal 감사합니다!!
@하동윤-j4w
@하동윤-j4w 3 жыл бұрын
마우스 클릭이 아닌 input manager에서 Throw를 만들고 g 로 바꿨습니다. 처음에는 투척되지 않고 제자리에서 터지며 캐릭터가 뜨길래 충돌하는 부분을 해제 했더니 Player가 grenade 를 투척 시 바라보고 있는 방향이 아닌 대각선 뒤쪽으로 던져집니다. 그래서 Player 위치에서 앞 쪽으로 날아가게 했는데 해결이 안 됩니다. 어떻게 해야될까요?
@goldmetal
@goldmetal 3 жыл бұрын
수류탄의 레이어를 설정해서 플레이어와 충돌하지 않게 설정하셔야 합니다. 이것은 Edit > Project Settings > Physics > Collision Matrix 에서 하실 수 있습니다.
@nana_0427
@nana_0427 3 жыл бұрын
@BB33224
@BB33224 4 жыл бұрын
안녕하세요 골드메탈님! 발견된 문제가 수류탄 관련이어서 이 영상에 댓글 남깁니다! 우클릭을 했더니 가지고 있는 수류탄을 전부 던지는데 혹시 어떻게 해결하는지 아실까요..!
@goldmetal
@goldmetal 3 жыл бұрын
우클릭 버튼 받는 방식이 Getbutton 이라면 GetButtonDown 으로 바꾸어주세요
@BB33224
@BB33224 3 жыл бұрын
@@goldmetal 감사합니다! ㅠㅠ 바로 해결되었어요
@건세동완
@건세동완 Жыл бұрын
안녕하세요 골드메탈님 영상 잘보고있습니다! 다름이 아니라 제가 수류탄을 완성하고 피격까지 완성하였는데요 수류탄을 맞춰도 Test Enemy의 색이 바뀌지도 않고 데미지도 들어가지 않습니다..오류라고 나오지도 않았습니다..분명 망치와 총도 데미지가 들어갔었는데 이젠 색만 바뀌고 데미지도 안들어가네요..나머진 다 구현이 됐습니다..! 어디가 문제인지 알수있을까요..?
@goldmetal
@goldmetal Жыл бұрын
수류탘이 터질 때 나오는 콜라이더의 태그, 레이어를 확인해보셔야 할 것 같습니다.
@건세동완
@건세동완 Жыл бұрын
@@goldmetal 해결했습니다! 그냥 무시하고 Enemy 파트 하니까 해결되더라고요 Test Enemy한테 문제가 있었던듯 합니다.! 좋은 하루 보내세요~
@러퍼-f8v
@러퍼-f8v 4 жыл бұрын
공전물체 제작에서 고정 댓글에서 코드를 새롭게 바꿔서 올려주셨습니다. 그런데 그대로 사용하니 수류탄 4개를 다먹고 던지면 수류탄이 1개가 돌기만 할뿐 던져지지 않습니다. 스크립트의 수정 부탁드립니다.
@goldmetal
@goldmetal 4 жыл бұрын
아이고 죄송합니다. 말씀하신 고정덧글 다시 수정하였습니다. if(hasGrenades > maxHasGrenades) return; grenades[hasGrenades ].SetActive(true); hasGrenades += item.value;
@러퍼-f8v
@러퍼-f8v 4 жыл бұрын
@@goldmetal If(hasGrenades == maxHasGranades)로 고쳐야 제대로 작동하네요. 앞으로도 좋은 영상 부탁 드리고 빠른 문제 해결 감사드립니다
@asdf-s9h
@asdf-s9h 3 жыл бұрын
수류탄을 던지고 폭발할때 NullReferenceException: Object reference not set to an instance of an object Grenade+d__4.MoveNext () (at Assets/Scripts/Grenade.cs:27) UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at :0) 위와 같은 에러거납니다 ㅠㅠ 몬스터한테 데미지도 안들어가구요 도와주시면 감사하겠습니다!
@goldmetal
@goldmetal 3 жыл бұрын
15:59 스피어캐스트 이후 결과가 없어서 그렇습니다. 몬스터의 레이어가 Enemy인지 인스펙터에서 확인해보세요
@BreadMeow8w8
@BreadMeow8w8 2 жыл бұрын
보니까 maxdistance 도 설정해주니까 없어지네요. SphereCastAll(Vector3 origin, float radius, Vector3 direction, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal); 라고 되있는데 여기서 Physics.SphereCastAll(transform.position, 15, Vector3.up, 20, LayerMask.GetMask("GM_Enemy")); Vector3.up뒤에 float값을 더 추가해줘야 합니다. layer이름이 잘못된줄 알고 계속 반복해서 보다가 해결안되길래 float값 하나 더 추가하니까 됩니다. 15:46쯤에 보시면 골드메탈님은 0f를 쓰셨었네요. 그니까 이 값을 누락한게 맞는듯합니다.
@김세원-p1y
@김세원-p1y 4 жыл бұрын
게임프로그래밍쪽 관심있는데... 유니티먼저 시작해도 되나요?
@goldmetal
@goldmetal 4 жыл бұрын
C#과 병행하면서 시작하셔도 됩니다. 이 내용은 B4 강좌에서 다루었어요.
@민트초코-c8i5m
@민트초코-c8i5m 3 жыл бұрын
수류탄을 5개이상 배치하고 다 먹으면 인덱스 초과했다고 오류뜨는대(null reference) 이후 강좌에서 이 부분 고치는것이 나오나요? 아니면 제가 뭔갈 잘못 작성했을까요 case Item.Type.Grenade: if (hasGrenades < maxHasGrenades) { grenades[hasGrenades].SetActive(true); hasGrenades += item.value; } if (hasGrenades > maxHasGrenades) hasGrenades = maxHasGrenades; break; 라고 if문 걸어서 현재수류탄이 최대수류탄을 넘지 않을때만 활성화,추가를 걸어서 null오류는 뜨지 않게 했습니다.
@goldmetal
@goldmetal 3 жыл бұрын
maxHasGrenades 를 5로 설정하셨다면 4로 바꿔주셔서 먹지 못하도록 해야 합니다.
@민트초코-c8i5m
@민트초코-c8i5m 3 жыл бұрын
고쳤어요... 공전 구현부분에서 댓글 달으신거 보고 그대로 if(hasGrenades == maxHasGrenades) return; grenades[hasGrenades ].SetActive(true); hasGrenades += item.value; 라고 수정햇더니 문제가 없네요 답변갑사합니다
@정숙반숙백숙김숙
@정숙반숙백숙김숙 3 жыл бұрын
void Start 실행 기준이 정확이 뭔가요? Explosion코루틴이 게임 시작됐을때 바로 시작이 안되나요?
@goldmetal
@goldmetal 3 жыл бұрын
게임 오브젝트가 활성화 되어있는 상태면 Update 실행 전에 한번 실행되는 단계입니다. 비활성화 되어있다가 활성화로 바뀌었을 때도 실행됩니다.
@가나다-z2v
@가나다-z2v 3 жыл бұрын
@@goldmetal 비활성홯에서 활성화할때 -> 비활성화로 시작해서 활성화할때 한번
@sangDu-park
@sangDu-park 3 жыл бұрын
수류탄을 던질때 직선으로만 갑니다. 골드메탈님처럼 튀기지 않아요. 왜 이런가요?
@goldmetal
@goldmetal 3 жыл бұрын
던져지는 수류탄 프리펩의 리지드바디에 Use Gravity 체크되어 있는지 확인해보세요
@SMILE-uz2bf
@SMILE-uz2bf 8 ай бұрын
엄마 난 커서 골드메탈이 될거야
@goldmetal
@goldmetal 8 ай бұрын
🤣🤣🤣
@라브라도-z6p
@라브라도-z6p 4 жыл бұрын
이제 막 보기 시작한 유저 입니다. 오브젝트들은 구할수없는건가용?
@goldmetal
@goldmetal 4 жыл бұрын
이 강좌의 첫번째 순서인 B38부터 시작하시면 됩니다.
@라브라도-z6p
@라브라도-z6p 4 жыл бұрын
@@goldmetal 우와아앙 굿입니다!
@안대훈-o8q
@안대훈-o8q 3 жыл бұрын
수류탄을 먹고서 우클릭을 누르면 콘솔창에 이렇게 떠요 UnityEngine.Quaternion rot) (at :0) UnityEngine.Object.Instantiate (UnityEngine.Object original, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation) (at :0) UnityEngine.Object.Instantiate[T] (T original, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation) (at :0) Player.Grenade () (at Assets/2Scripts/Player.cs:154) Player.Update () (at Assets/2Scripts/Player.cs:74)
@goldmetal
@goldmetal 3 жыл бұрын
플레이어 154줄 의 Instantiate 매개변수가 잘못된 모양입니다. 첫번째는 프리펩 오브젝트, 두번째는 위치 Vector3, 세번째는 각도 Quaternion 타입이니 참고하세요. 각도의 경우 Quaternion .Identity 로 (0,0,0)을 줄 수 있습니다.
@안대훈-o8q
@안대훈-o8q 3 жыл бұрын
@@goldmetal if(gDown && !isReload && !isSwap) { Ray ray = followCamera.ScreenPointToRay(Input.mousePosition); RaycastHit rayHit; if (Physics.Raycast(ray, out rayHit, 100)) { Vector3 nextVec = rayHit.point - transform.position; nextVec.y = 2; GameObject instantGrenade = Instantiate(grenadeObj, transform.position, transform.rotation); Rigidbody rigidGrenade = instantGrenade.GetComponent(); rigidGrenade.AddForce(nextVec, ForceMode.Impulse); rigidGrenade.AddTorque(Vector3.back * 10, ForceMode.Impulse); hasGrenades--; grenades[hasGrenades].SetActive(false); } }
@안대훈-o8q
@안대훈-o8q 3 жыл бұрын
@@goldmetal 확인 해 봤는데 잘 모를겠어서 올립니다
@goldmetal
@goldmetal 3 жыл бұрын
@@안대훈-o8q grenadeObj 변수에 수류탄 프리펩이 채워져있는지 인스헥터 창에서 살펴보세요
@안대훈-o8q
@안대훈-o8q 3 жыл бұрын
@@goldmetal 아 제가 채우는걸 까먹었었네요
@soloplay_
@soloplay_ 2 жыл бұрын
안녕하세요 버그가 발생하여 질문드립니다. 게임 시작시 코인 및 부딪칠시 먹어져야 하는 아이템들이 먹어지질 않아 확인해본 결과 게임 실행을 하면 콜라이더가 꺼지는 현상이 발생하였습니다. 이건 어떤 문제인지 알수 있을까요 ㅠㅠ
@goldmetal
@goldmetal 2 жыл бұрын
자동으로 Enable이 꺼진가는 이야기인가요? 스크립트가 같이 있다면 한번 스크립트 빼고 순수하게 트랜스폼 + 콜라이더 + 매쉬관련 컴포넌트만 남겨두고 다시 실행해보세요. Enable이 정상적으로 있다면 스크립트 안에 범인이 있는겁니다.
@박형선-y6s
@박형선-y6s 3 жыл бұрын
2D 도 구현 방법도 비슷한가요?
@goldmetal
@goldmetal 3 жыл бұрын
Z축을 고려하지 않는다면 거의 동일합니다.
@Nheung-bs9cy
@Nheung-bs9cy Жыл бұрын
수류탄을 투척할때 플레이어가 점프하고 수류탄도 멀리 나가지를 않아요.. 왜이럴까요?
@goldmetal
@goldmetal Жыл бұрын
수류탄의 콜라이더와 플레이어와 충돌하는 문제입니다. 수류탄 레이어를 PlayerBullet으로 설정하고 Edit > Project Settings > Physics > Collision Matrix에서 Player 와 PlayerBullet가 겹치를 구간을 체크 해제해서 충돌하지 않게 해주세요
@Nheung-bs9cy
@Nheung-bs9cy Жыл бұрын
@@goldmetalthrow grenade 레이어 설정 잘 되어있고 project settings에서 충돌 안하게 한 것도 확인했는데 뭐가 문제일까요..?
@goldmetal
@goldmetal Жыл бұрын
@@Nheung-bs9cy 수류탄 프리펩에서 레이어 바뀌어있는지 확인해주세요
@김주역-w4h
@김주역-w4h 4 жыл бұрын
와우 1분전!
@크림수프-j9y
@크림수프-j9y Жыл бұрын
😀😃
@푸라오젼
@푸라오젼 4 жыл бұрын
보면서 구현해보고 있는데 잘따라한거같은데 수류탄을 4개먹고 던지니 한번에 던져버리네요 뭐가 문제일까요 ?
@goldmetal
@goldmetal 4 жыл бұрын
수류탄 던지는 버튼을 GetButtonDown으로 하셔야 합니다.
@푸라오젼
@푸라오젼 4 жыл бұрын
@@goldmetal 이걸 놓쳤네요 감사합니다
@jjorykim8153
@jjorykim8153 4 жыл бұрын
회피할때도 수류탄이 던져지는데 안던져지게 하고싶은데 어떻게 해야하나요 ㅠㅠ
@goldmetal
@goldmetal 4 жыл бұрын
GetInput() 함수에서 입력키가 중복인지 확인해보세요. 회피는 Jump 버튼이고, 수류탄은 Fire2 입니다.
@jjorykim8153
@jjorykim8153 4 жыл бұрын
앗...어제 바로 수정했습니다 ㅎㅎ늘 좋은 강의 올려주셔서 감사합니다~
@jamjam3379
@jamjam3379 2 жыл бұрын
항상 잘보고있습니다. 제가 수류탄 폭발을 구현하려고 찾아보았는데요. 저는 일단 오류없이 잘 구현되었습니다. 저는 추가로 수류탄 위치에 따라 수류탄과 가까이 있는 적에게는 더 큰 힘을, 수류탄과 멀리 있는 적에게는 약한 힘을 주고 싶습니다. IEnumerator OnDamage(Vector3 reactVec) { yield return new WaitForSeconds(0.1f); //reactVec = reactVec.normalized; reactVec += Vector3.up * 3; rigid.freezeRotation = false; rigid.AddForce(reactVec * 200, ForceMode.Impulse); Destroy(gameObject, 4); } reactVec = reactVec.normalized; 이 코드를 사용하지 않으니 방향에 따라 힘의 크기는 달라졌습니다. 하지만 오히려 수류탄과 멀리있는 적에게 더 큰 힘이 작용합니다. 이것을 반대로 수류탄과 멀리있는 적은 가까이 있는 적보다 힘을 적게 주는 것으로 구현하고 싶은데 혹시 힌트가 있을까요?
@jamjam3379
@jamjam3379 2 жыл бұрын
여러 방법으로 계속 시도해 보다가 'AddExplosionForce'라는 함수를 발견하고 해결했습니다. 제가 초보라서 몇시간을 고민하다 머리 식힐겸 산책갔다와서 해봤는데 바로 해결을 했네요! public void HitByGrenade(Vector3 explosionPos) { StartCoroutine(OnDamage(explosionPos)); } IEnumerator OnDamage(Vector3 reactVec) { yield return new WaitForSeconds(0.1f); rigid.freezeRotation = false; rigid.AddExplosionForce(1000.0f, reactVec, 10, 5, ForceMode.Impulse); Destroy(gameObject, 4); }
@작곡가보빈
@작곡가보빈 Жыл бұрын
@@jamjam3379 좋은정보 감사합니다, 혹시 AddExplosionForce의 괄호안에있는 변수들은 어떤의미인지여쭤봐도될까요? 1000 reactVec 10 5 등이요
@won8634
@won8634 2 жыл бұрын
안녕하세요 골드메탈님! 항상 좋은 영상 올려주셔서 감사합니다~ 궁금한게 있는데요, 수류탄이 폭발할때 데미지를 -100으로 설정했는데, Enemy가 피격될때 (Enemy hp는 200으로 설정) 100이 아닌 두배인 200으로 들어가서 바로 죽더라구요 혹시 몰라서 hp 감소 수치를 변경해도 똑같이 두배로 들어가는데, 이건 raycast의 Physics.SphereCastAll때문에 면적이 넓어서 그런건가요?
@goldmetal
@goldmetal 2 жыл бұрын
몬스터가 연속으로 두번 맞지 않도록 몬스터에게 bool isDamage; 을 추가해보시는 것이 좋겠습니다. HitByGrenade 함수 앞부분에 if(!isDamage) isDamage = true; 추가하고 OnDamage 끝부분에 isDamage = false; 추가하시면 됩니다.
@won8634
@won8634 2 жыл бұрын
@@goldmetal 감사합니다! 말씀대로 해봤더니 데미지가 한번만 들어가네요! 너무너무 감사합니다! 사랑해요!
@AwesomeAbalone
@AwesomeAbalone 4 жыл бұрын
싫어요 누구냐
@inro4568
@inro4568 3 жыл бұрын
5월 19 일
@AwSoMeFactOry
@AwSoMeFactOry 4 жыл бұрын
Enemy.cs 에서 3가지 에러가 떠요. line 28,37 에서 false 를 넣어도 OnDamage가 빨강줄이 밑에 뜨네요 코드는 CS0103 line 47에서는 reactVec이 빨강줄이뜨네요 코드는 CS0136 drive.google.com/file/d/1cfFl-7WyKYvPO21KwqOlAaC8YGfxqcLQ/view?usp=sharing
@goldmetal
@goldmetal 4 жыл бұрын
첫번째는 OnDamage 코루틴을 찾을 수 없다는 이야기입니다. 스펠링이 다르거나 StartCoroutine()함수로 실행시키지 않아서 발생하는 문제입니다. 두번째는 reactVec에 public이 없어서 찾을 수 없는 것이니 확인해보세요.
@AwSoMeFactOry
@AwSoMeFactOry 4 жыл бұрын
​@@goldmetal 문재를 못 찾았어요 ㅠㅠ 여기 제 Enemy.cs 파일 drive.google.com/file/d/1nYHHe4l-GxzG8HpRqA4hdXm-tVpARrrG/view?usp=sharing 다운로드 해서 확인해주세요.
@goldmetal
@goldmetal 4 жыл бұрын
@@AwSoMeFactOry OnDamage 코루틴이 왜 HitByGrenade 함수 안에 들어가 있는지 모르겠지만, 함수처럼 따로 빼주세요.
@AwSoMeFactOry
@AwSoMeFactOry 4 жыл бұрын
@@goldmetal 앗! 에러 부분만 봐서 함수는 못봣네요, 다음부터 에러뜨면 참고 할께요! 이제 에러가 없네요
@ShinSJ_08
@ShinSJ_08 4 жыл бұрын
4분전..
@KKKK-mk5it
@KKKK-mk5it 4 жыл бұрын
조아요 골드메탈 구독하기 골드메탈
@AwSoMeFactOry
@AwSoMeFactOry 4 жыл бұрын
이번 영상 재미있게 봣습니다. drive.google.com/file/d/1InYmVBd-wwSCAITmtiFDECRbcNnMp-96/view?usp=sharing
@user-wi6vkq21k9a
@user-wi6vkq21k9a 4 жыл бұрын
낚시댓글 하트준거 존나웃기네 진짜 ㅋㅋㅋㅋㅋ 댓글 안읽는거 들켰쥬?
@초코맛누룽지
@초코맛누룽지 4 жыл бұрын
이새킨 뭐지
@goldmetal
@goldmetal 4 жыл бұрын
웃음을 찾으셨다니 여기도 하트 드리겠습니다 😘
Can You Find Hulk's True Love? Real vs Fake Girlfriend Challenge | Roblox 3D
00:24
Каха и лужа  #непосредственнокаха
00:15
Человек паук уже не тот
00:32
Miracle
Рет қаралды 4,4 МЛН
게임 복사해서 AI로 학습하기 #게임AI #강화학습
10:03
코딩 도전
12:07
침착맨
Рет қаралды 596 М.
Can You Find Hulk's True Love? Real vs Fake Girlfriend Challenge | Roblox 3D
00:24