3D 쿼터뷰 액션게임 - 다양한 몬스터 만들기 [유니티 기초 강좌 B49]

  Рет қаралды 33,052

Goldmetal

Goldmetal

Күн бұрын

Пікірлер: 344
@겜쟁이독사
@겜쟁이독사 2 жыл бұрын
이번 강의도 완료 ㅎㅎㅎ 언제나 감사합니다!!
@그럼날아봐
@그럼날아봐 4 жыл бұрын
우와 다양한 몬스터들만 돌아다녀도 술래잡기 하는것 같고 재미있네요 ㅎㅎ 유니티 강좌 올려주셔서 감사합니다!! 잘생긴 골메님!! ㅋ
@김민석-f3g6b
@김민석-f3g6b Жыл бұрын
메탈님 보고 공부중인데 정말 보기좋고 이해하기 쉽게 가르쳐주셔서 응용하는 재미도 있고 직무 확실히 정할 수 있게됐어영!
@상위포식자
@상위포식자 3 жыл бұрын
이번 강의도 전부구현 했습니다 항상 유니티 좋은 강의 감사드립니다~
@stl5396
@stl5396 4 жыл бұрын
매번 강의 올려주셔서 정말 감사합니다 ㅠㅠ
@B6jePV61
@B6jePV61 Ай бұрын
Enemy C 의 콜라이더를 모델링보다 작게 해서 콜라이더가 바닥에 닿지 않으니까 플레이어에게 닿으면 밀리거나 회전하게 되네요. 콜라이더를 바닥에 닿을 수 있도록 크게 하니까 문제가 해결됐습니다.
@gim-ori
@gim-ori Жыл бұрын
강좌가 끝나질 않아....!
@danielchoi7108
@danielchoi7108 4 жыл бұрын
오늘도 감사히 배우겠습니다
@kamisato3363
@kamisato3363 3 жыл бұрын
얼마 안남았네요! 나머지도 화이팅하겠숨니다
@jamespark5823
@jamespark5823 2 жыл бұрын
잘봤습니다!!! 좋은 강의 감사드려요 ㅎ
@징어오-t6v
@징어오-t6v Жыл бұрын
좋은 강의 항상 감사합니다!!!
@의궁심
@의궁심 5 ай бұрын
영상 항상 너무 잘보고있습니다 !! 근데 혹시 Attack함수쓰실때 애니메이션부분 trigger가 아닌 bool을 이용한 이유가있을까요??
@goldmetal
@goldmetal 5 ай бұрын
단순히 가독성을 위해서 변수를 추가한 것이니 편한 방법으로 진행하시면 됩니다!
@진민규-v6j
@진민규-v6j 5 ай бұрын
좋은 강의 감사합니다 플레이어 피격 부분에서 박스 콜라이더를 움직이면 플레이어가 데미지를 입는게 아닌 점프모션을 취합니다 혹시 어떤 부분을 체크해봐야 할까요?
@진민규-v6j
@진민규-v6j 5 ай бұрын
바보같이 박스콜라이더 isTrigger를 체크 안했네요....해결 했습니다 좋은 강의 항상 감사드립니다
@turtlezeno
@turtlezeno 4 жыл бұрын
오늘 영상 잘봤습니다. 감사합니다!
@나는_시청자다
@나는_시청자다 Ай бұрын
돌격형 몬스터에서 돌격을 했는데 데미지를 입지 않습니다. 일단 보이는 값을 바꿔보고 있는데 뭐가 문제인지 모르겠네요.. 코드: void Targerting() { float targetRadius = 0; float targetRange = 0; switch (enemyType) { case Type.A: targetRadius = 1.5f; targetRange = 1f; break; case Type.B: targetRadius = 1f; targetRange = 10f; break; case Type.C: break; } RaycastHit[] rayHits = Physics.SphereCastAll(transform.position, targetRadius, transform.forward, targetRange, LayerMask.GetMask("Player")); if (rayHits.Length > 0 && !isAttack) { StopCoroutine(Attack()); StartCoroutine(Attack()); } } IEnumerator Attack() { isChase = false; isAttack = true; anim.SetBool("isAttack", true ); switch(enemyType) { case Type.A : yield return new WaitForSeconds(0.2f); meleeArea.enabled = true; yield return new WaitForSeconds(1f); meleeArea.enabled = false; yield return new WaitForSeconds(1f); break; case Type.B : yield return new WaitForSeconds(0.1f); rigid.AddForce(transform.forward*30,ForceMode.Impulse); meleeArea.enabled=true; yield return new WaitForSeconds(1f); rigid.velocity = Vector3.zero; meleeArea.enabled = false; yield return new WaitForSeconds(2f); break; case Type.C : break; } isChase = true; isAttack = false; anim.SetBool("isAttack", false); }
@나는_시청자다
@나는_시청자다 Ай бұрын
아 다시보니 데미지 주는 boxCollider를 몬스터 안에 넣어 놓았네요..
@지니-c5y5o
@지니-c5y5o Жыл бұрын
안녕하세요 강좌 잘 보고있습니다 ! 혹시 enemy끼리 부딪히면 빙글빙글 도는 현상을 어떻게 수정할 수 잇을까요? 아예 부딪히지 않게하는 것은 부자연스러울 것 같은데ㅜㅜ 빙글빙글 돌지만 않았으면 좋겠습니다..
@goldmetal
@goldmetal Жыл бұрын
플레이어의 FixedUpdate처럼 Enemy에도 angularVelocity를 zero로 고정하는 방법이 있습니다.
@상위포식자
@상위포식자 Жыл бұрын
네비게이션 이동중 Vector3에 x축을 잠궈놓을 방법은 없나요? rigidbody는 freeze position 체크해도 효과가 없네요 ㅡ.ㅡ;
@goldmetal
@goldmetal Жыл бұрын
에이전트에서 위츠를 옮기는 함수가 있긴 합니다. 에이전트 변수에서 점하나 찍으시고 자동완성 기능으로 함수들을 파악해보세요
@ReeperKuruRuke
@ReeperKuruRuke Жыл бұрын
EnemyMeleeArea라는 태그를 따로 만들어서 Bullet스크립트의 투사체를 파괴하는 코드의 조건으로 gameObject의 태그가 "EnemyBullet"임을 조건으로 만들고, Player스크립트의 OnTriggerEnter함수에도 태그가 "EnemyMeleeArea"일 때 "EnemyBullet"이랑 충돌했을때랑 똑같은 코드가 실행되도록 만들어도 될 것 같습니다! 그리고 Enemy C의 자식오브젝트에 매터리얼이 여러개가 있어서 피격시 색상이 제대로 바뀌지 않는 버그가 있어요!
@goldmetal
@goldmetal Жыл бұрын
Enemy C는 보스처럼 여러 매쉬렌더러를 가지고 있어서 GetComponentsInChildren()를 사용하고 이것을 foreach문으로 하나씩 순회하면서 모든 것의 색상을 바꿔야합니다. 물론 되돌릴 때도 동일하게 foreach문을 사용해야 해요.
@VoidUpdate
@VoidUpdate 5 ай бұрын
지난 시간에 FreezeVelocity로 플레이어와 몬스터 충돌시 리지드바디의 움직임을 막았었는데, 이번 강의 이후로 다시 전부 밀려나기 시작합니다ㅠㅠ 어디가 잘못된 걸까요...
@goldmetal
@goldmetal 5 ай бұрын
리지드바디 타입을 Kinematic으로 바꾸면 됩니다 다만 점프나 죽음으로 인해 넉백될 때는 꼭 Dynamic으로 바꿔야 정상적으로 작동된다는 점 주의해주세요. 이 내용은 코드로 하셔야합니다
@VoidUpdate
@VoidUpdate 5 ай бұрын
@@goldmetal 감사합니다!
@yeonsook3129
@yeonsook3129 6 ай бұрын
meshs = GetComponentsInChildren(); 를 치자마자 워닝 8개가 뜨면서 움직일 수가 없는 데 뭐가 문제일까요?? 워닝 뜨는 “void update”에 마우스 포인터 갖다 대보니 한번도 사용되지 않는 함수라는데…
@yeonsook3129
@yeonsook3129 6 ай бұрын
아 }를 잘못 넣었다
@유재훈-j3x
@유재훈-j3x 4 ай бұрын
플레이어 캐릭터가 Enemy B 몬스터에게 공격당하면 플레이어 캐릭터가 밀려나는데 어디서 실수한 걸까요,,,? 그리고 플레이어 리지드 바디 타입을 키네마틱으로 바꾸면 플레이어에게 딜이 안들어갑니다
@goldmetal
@goldmetal 4 ай бұрын
몬스터의 근접공격 콜라이더에 IsTrigger 체크하셨는지 확인해주세요
@EverEnduringStruggler
@EverEnduringStruggler 2 жыл бұрын
안녕하세요 :) 영상 너무 잘봤습니다 ! 궁금한 점이 있어서 이렇게 댓글답니다.. 아직초보라서.. enemy에서 애니메이션을 넣을때 왜 meshobject 에 넣나요 ? 바로 enemy에 넣으면 안되나요~?
@goldmetal
@goldmetal 2 жыл бұрын
외부에서 만들어진 모델을 유니티로 불러오고 방향을 맞추기 위해 제가 한번 더 오브젝트로 감싸서 프리펩으로 만들었기 때문입니다. 실질적인 모델 오브젝트는 Mesh Object부터라서 애니메이터도 여기에 적용해주셔야 합니다.
@jchoe3107
@jchoe3107 2 жыл бұрын
올려주신 영상들 덕분에, 매번 잘 배우고 있습니다. 1. 올려주신 영상을 조금 응용해보고자, 사지가 길쭉한 캐릭터 에셋으로 시도하고, 무기 위치를 주먹으로 설정했습니다. 그랬더니 처음엔 괜찮은데, 접근한 상태에서 플레이어 위치를, 적 옆 뒤쪽으로 이동하면, 플레이어 방향과 상관없이, 처음 마주했던 방향으로 공격을 합니다. targetRadius를 줄였을 때 역시, enemy 등 뒤로 이동하면, 뒤돌아서 때리는게 아니라, 플레이어 주변을 360도 계속돌기만 합니다. 2. 복서들이 허그를 하면 스트레이트를 못날리듯, 이 emeny도, 완전 딱 붙어있으면 사실상 플레이어 뒤쪽으로만 공격을 날리는데, 자신의 공격범위에 닿을 수 있는 위치로 이동해서 때리게 할 순 없을까요? 영상의 코드를 조금 수정했습니다. setbool로 공격모션을 설정하니, 애니메이션이 멈춰서, 이유를 알 수 없기에 trigger로 수정했고, void FreezeVelocity() { if (!isChase) { rigid.velocity = Vector3.zero; rigid.angularVelocity = Vector3.zero; if (gameObject.tag != "MonsterLocked") ani.SetBool("isWalk", false); } else if (isChase == true) ani.SetBool("isWalk", true); FreezeVelocity 메서드도, 위처럼 살짝 수정했습니다. 이게 영향이 있을까요? 방법이 있다면 궁금합니다. 부탁드리겠습니다.
@jchoe3107
@jchoe3107 2 жыл бұрын
1번은 Quaternion.RotateTowards과 LookRotation을 이용해서 해결했습니다.
@한민호-o8x
@한민호-o8x 4 жыл бұрын
영상 정말 잘 보고있습니다! 항상 좋은 영상 감사드립니다. 몇가지 질문드릴게 있어서 댓글 남깁니다. 1.Enemy B는 피격시에 몸 전체가 빨간색으로 잘 바뀌는데 Enemy A의 경우 배쪽에 흰색 부분만 빨갛게 변하고 초록색이던 부분은 그냥 색이 어두워 지는 걸로 끝납니다. C는 노란부분은 아예 색이 안바뀌고 배쪽만 빨갛게 변하네요 2. A,B 의 시체가 남아있을때 시체 주변으로가면 데미지를 입습니다. 어떻게해야할까요?
@goldmetal
@goldmetal 4 жыл бұрын
플레이어 피격처럼 foreach를 써서 모든 material의 색상을 바꿔주시면 됩니다. 이 내용은 보스를 다루는 B50에서 다루니 계속 진행하셔도 됩니다.
@Joohyunsang
@Joohyunsang 3 жыл бұрын
@@goldmetal 저도 이 부분 궁금했었는데 이미 답변 주셨네요 ^^ 늘 감사합니다!
@구구콘-p4r
@구구콘-p4r 3 жыл бұрын
안녕하세요 골드메탈님 항상 좋은 영상 감사드립니다. 본 강좌에서는 몬스터가 플레이어의 위치를 받아 따라가는 형태로 제작이 되었는데 혹시 온라인 게임을 개발하는 필드에서는 어떻게 사용되어 지는 지 알 수 있을까요? sphereCast를 사용해서 구현하려고 하면 LayerMask를 사용 못해서 정확하게 player만을 가져올 수 없고 sphereCastall 을 사용하면 배열의 어느 위치에 플레이어가 있는 지 모르겠네요ㅠㅠ 저는 처음부터 따라오는 게 아닌 일정 거리 이상으로player가 접근했을 때 NavMeshAgent가 활성화 되도록 만들어보고 싶어서요 읽어주셔서 감사합니다!
@goldmetal
@goldmetal 3 жыл бұрын
SphereCast도 레이어 마스크를 받습니다. 인자 개수를 잘 확인해서 넣어주세요. docs.unity3d.com/ScriptReference/Physics.SphereCast.html
@구구콘-p4r
@구구콘-p4r 3 жыл бұрын
아무래도 유니티 도큐먼테이션에서는 설명이 영어라 잘 안 보게 되더라구요 있었네요 감사합니다😍
@ButterCream12-r4f
@ButterCream12-r4f 4 ай бұрын
골드메탈님, 8분 쯤에 if statement 바꾼 의도가 뭐죠? Enemy가 죽은 이후에도 이동이 유지되어서인가요? 제가 확인해보았을 때는 죽은 후에는 움직임을 멈춰서 혹시 제가 잘못 이해하고 있나 싶어서요.
@goldmetal
@goldmetal 4 ай бұрын
isChase = true인 상태에서 NavAgent를 비활성화 시키는 타이밍이 있는데 여기서 에러가 발생할 수 있어 if 기준을 agent로 교체한 것입니다. 사실 isChase 상태에 따라 NavAgent enable을 제대로 제어하면 굳이 이 작업은 안해도 됩니다.
@ButterCream12-r4f
@ButterCream12-r4f 4 ай бұрын
@@goldmetal아 그렇군요. 감사합니다.
@진민규-v6j
@진민규-v6j 5 ай бұрын
골드메탈님 안녕하세요 원거리 몬스터를 만들고있는데 미사일 생성위치가 몬스터의 정면이 아닌 왼쪽에서 생성됩니다. 그리고 미사일이 플레이어 피격이 안되네요 어떤 부분을 살펴보면 좋을까요? 태그, 스크립트 확인해봤는데 잘 모르겠습니다. 항상 좋은 강의 감사합니다
@goldmetal
@goldmetal 5 ай бұрын
원거리 몬스터 프리펩에서 Mesh Object 자식 오브젝트가 Y축으로 90도 돌아가있는지 확인이 필요하겠네요. 미사일 프리펩에도 태그와 콜라이더 유무를 확인해보시면 좋겠습니다.
@진민규-v6j
@진민규-v6j 4 ай бұрын
감사합니다 강의 참고 많이 하고있습니당
@youngho3661
@youngho3661 Жыл бұрын
안녕하세요 골드메탈님 영상 잘 보고 있습니다 덕분에 많은 공부가 되었습니다. 지금 마지막 강의까지 다 듣고 따라해본 상태인데요 망치 공격의 판정이 이상합니다. 적이 공격할때만 망치공격이 적용되고, 원거리 몬스터의 경우 망치 데미지가 아예 들어가지 않습니다. 뭐가 문제인지 찾을 수 가 없어서 도움을 요청합니다 ㅠㅠ
@goldmetal
@goldmetal Жыл бұрын
망치의 근거리 공격 범위를 망치에 두시지 마시고 플레이어 바로 아래 자식 오브젝트로 배치해두세요. 그럼 훨씬 안정적으로 됩니다.
@김평-c6n
@김평-c6n 2 жыл бұрын
감사합니다.
@I_am_jake1104
@I_am_jake1104 2 жыл бұрын
원거리형 몬스터가 가까이에서 미사일을 쏘고 미사일을 가끔씩 쏴요
@goldmetal
@goldmetal 2 жыл бұрын
플레이어 검색 레이캐스트의 폭과 길이가 작아서 그럴 수 있습니다. 36:10 참고하셔서 수치를 늘려보시는걸 추천드립니다.
@rkk5559
@rkk5559 3 жыл бұрын
아주 좋아요 잘 참고할게요😊
@쫑이-e4k
@쫑이-e4k 4 ай бұрын
RaycastHit rayHit; if(Physics.SphereCast(transform.position, targetRadius, transform.forward, out rayHit, targetRange, LayerMask.GetMask("Player"))){ if(rayHit.collider != null && !isAttack){ StartCoroutine(Attack()); } } 배열말고 그냥 SphereCast써도 상관없나요?
@goldmetal
@goldmetal 4 ай бұрын
넵 가능합니다
@아직안늦었다
@아직안늦었다 2 жыл бұрын
Player가 데미지를 입게할때 현재 강의 영상에선 몬스터에게 피격되는 부분에 bullet 스크립트를 재활용하고 있는걸로 압니다. 몬스터 자체에 int damage를 만들어서 아래처럼 최상위 부모를 받아오는 형식으로 하면 문제가 되는 경우가 있을까요? 몬스터 클래스 = Monster Monster monster = other.GetComponentInParent(); 몬스터 들에게 상속 시키는 형태로 공부중이여서 질문드립니다.
@goldmetal
@goldmetal 2 жыл бұрын
네 물론 가능합니다.
@brotherjoon
@brotherjoon 3 ай бұрын
안녕하세요 올려주신 강의로 게임을 만들고 있는 대학생입니다! 다름이 아니라 몬스터에 플레이어 인식범위를 만들어 충돌시 플레이어를 따라가게 하였습니다. 그러나 같은종류의 몬스터가 여러마리 있다면 충돌된 몬스터만 따라오는 것이 아니라 같은 프리팹 몬스터가 모두 이동하는 버그가 있습니다..! 혹시 어떻게 고쳐야할까요? 아래 코드 첨부합니다..! Enemy 스크립트 private void ChaseStart() { isChase = true; anim.SetBool("isWalk", true); nav.isStopped = false; chaseCheck = true; } private void ChaseEnd() { isChase = false; anim.SetBool("isWalk", false); nav.isStopped = true; chaseCheck = false; } private void Update() { if (nav.enabled) { switch (enemyType) { case Type.A: if(slimeCheckRange) { nav.SetDestination(target.position); nav.isStopped = !isChase; if(!chaseCheck) { ChaseStart(); } } else { ChaseEnd(); } break; case Type.B: if (pigCheckRange) { nav.SetDestination(target.position); nav.isStopped = !isChase; if (!chaseCheck) { ChaseStart(); } } else { ChaseEnd(); } break; case Type.C: if (birdCheckRange) { nav.SetDestination(target.position); nav.isStopped = !isChase; if (!chaseCheck) { ChaseStart(); } } else { ChaseEnd(); } break; } } } 각 몬스터 스크립트(이러한 유형으로 총 3개 만들엇습니다.) public class Slime_CheckRange : MonoBehaviour { private void OnTriggerEnter(Collider other) { if (other.tag == "Player") { Debug.Log("플레이어 감지"); Enemy.slimeCheckRange = true; } } private void OnTriggerExit(Collider other) { if(other.tag == "Player") { Debug.Log("플레이어 나감"); Enemy.slimeCheckRange = false; } } }
@goldmetal
@goldmetal 3 ай бұрын
이걸로만은 알 수 없고 만드신 몬스터를 동서남북으로 멀리 떨어뜨려놓고 테스트해보시는 것이 좋겠습니다. 플레이어를 검색하는 콜라이더가 너무 넓으면 몬스터가 뭉쳐있을 때 원활한 테스트가 되지 않기 때문이죠
@아우-z2o
@아우-z2o 10 ай бұрын
영상 잘보고있습니다! 궁금한게 미사일부분에서 위치조정이나 각도 스크립트등 왜 mesh Object에서 하는지 궁금합니다.
@goldmetal
@goldmetal 10 ай бұрын
부모 오브젝트는 NavAgent에 의해서 움직이고 있기 때문에 나머지 역할은 자식오브젝트에 분담에서 조정하는 것입니다.
@아우-z2o
@아우-z2o 10 ай бұрын
@@goldmetal 감사합니다! 한가지더 물어볼게있습니다. 현재 몬스터가 죽어서 시체상태인데 돌진몬스터시체가 사라지기전에 돌진한다든가 시체에서 미사일을 발사한다든가하는데 이건 어떻게 없엘수있나요?
@goldmetal
@goldmetal 10 ай бұрын
@@아우-z2o 몬스터의 죽음을 저장하는 bool isDead를 하나 만들고 죽었을 때 이걸 true로 올립니다. 그리고 각종 여러 행동들을 if(!isDead) { } 로 감싸는거죠. 그럼 죽고 나서는 그러한 행동들을 하지 않게 됩니다.
@아우-z2o
@아우-z2o 10 ай бұрын
@@goldmetal 늦은시간답변 정말 감사합니다!
@jihyeonbang1960
@jihyeonbang1960 Жыл бұрын
좋은 강의 감사드립니다!! 강의 따라하는데 미사일이 자꾸 퉷 뱉은 것 처럼 돌면서 하늘로 향하는 현상이 계속 발생하더라구요. 그래서 미사일의 rigidbody의 Freeze Rotation의 x,y,z 축을 고정하니 일자로 잘 날아 갑니다. 왜 이런 현상이 발생하는 걸까요??
@goldmetal
@goldmetal Жыл бұрын
안족의 미사일 매쉬 오브젝트에 리지드바디와 콜라이더 있는 상태로 몬스터와 부딧치면서 물리적임 움직임이 발생했나봅니다. 몬스터 레이어와 몬스터 발사체 레이어를 만들어서 각 오브젝트에 Layer 설정하고 Edit > Project Settings > Physics > Collision Matrix에서 겹치는 구간을 체크해제해서 충돌하지 않게 하시면 됩니다.
@jihyeonbang1960
@jihyeonbang1960 Жыл бұрын
이렇게 빠른 답변이라니 완전 감동이네요 ㅠㅠ 감사합니다! 가르쳐 주신 대로 시도해보겠습니다!@@goldmetal
@jimokn8n
@jimokn8n 4 жыл бұрын
Enemy C 의 BodyUpper 의 메쉬렌더러에 EnemyC 라는 매터리얼을 넣는게 맞나요? A와B 를 타격할 때는 정상적으로 빨간색 처리 되는데 C는 잘 처리되지않네요. 영상에 나온 프리펩과 제공해주신 에셋 프리펩이 다소 다른점이 있어 여쭤봅니다!
@goldmetal
@goldmetal 4 жыл бұрын
Enemy C는 모델링이 좀 더 많아서 아래쪽 턱만 색상이 바뀔겁니다. 피격 색상에 대해서는 B51에서 다시 한번 수정되니 크게 신경쓰지 마시고 넘어가시면 됩니다.
@3412-p2y
@3412-p2y 2 жыл бұрын
강좌 잘 들었습니다!! 저는 플레이어 피격시에 무적시간동안 투명하게하고싶어서 Body의 Material 안에 Rendering Mode를 Transparent로 해서 알파값 조정했는데 혹시 이렇게 해도 되는건가요?
@goldmetal
@goldmetal 2 жыл бұрын
네 맞습니다. 그렇게 하셔도 됩니다.
@민찬-w3m
@민찬-w3m Жыл бұрын
골드메탈님 다른 에셋 캐릭터를 쓰는데 여긴 mesh가 안들어있어서 색깔이 안변하네요 그냥 넣어봤더니 캐릭터가 이상해져서 다르게 피격효과를 줄수있나요?
@goldmetal
@goldmetal Жыл бұрын
MeshRenderer가 있는 오브젝트에 접근만 하시면 가능합니다. GetComponentsInChildren을 활용해보세요.
@오늘도좋은하루되-v5k
@오늘도좋은하루되-v5k 4 жыл бұрын
좋은 영상 감사합니다
@박정수-w6u9u
@박정수-w6u9u 4 жыл бұрын
안녕하세요!! 골드메탈님영상보면서 공부하는중입니다!! 매번 설명과 함께 좋은 영상너무감사합니다 여쭤보고싶은게있는데 답변주시면너무감하겠습니다 ㅠ 몬스터가 공격 후에 멈추는 yeild return 시간만큼 멈춰있게 되는데 공격후 에니메이션을 Idle로 대기하고 싶은데 어떻게 해야되죠 ㅠㅠ 추가로 피격 시 메테리얼로 색을 변경 하는것을 피격 에니메이션을 넣고싶은데 강의해주신 내용에 메테리얼대신 에니메이션만추가하면될까요?
@goldmetal
@goldmetal 4 жыл бұрын
Taunt에서 Idle로 가는 트랜지션과 doIdle 트리거를 추가해서 SetTrigger()를 공격 직후 호출하시면 되겠습니다. 메테리얼 대신 애니메이터를 사용해도 되지만 보스 모델링에는 피격 애니메이션이 없다는 점 참고해주세요.
@NB-up8fs
@NB-up8fs 3 жыл бұрын
감사합니다. !!
@ronchaos
@ronchaos 4 жыл бұрын
재미있게 보고있습니다.
@김현민엘텍공과대학소
@김현민엘텍공과대학소 Жыл бұрын
영상 너무 잘 보고 있습니다! ^____^ 질문있는데 혹시 enemyType는 무조건 public으로 해야할까요? 배포를 목표로 게임 제작을 하는 중인데 public으로 써도 되는지가 궁금해요.
@goldmetal
@goldmetal Жыл бұрын
인스펙터에서 타입을 쉽게 조절함으로서 원하는 로직을 실행할 수 있게 되기 때문에 public으로 공개한 것입니다. 만약 이런 의도가 필요없다면 굳이 public을 하지 않으셔도 됩니다.
@Estelelenath
@Estelelenath 4 жыл бұрын
골드메탈님 안녕하세요! 항상 좋은 강의 감사드려요! 1.혹시 이번 영상처럼, 몹을 만들었는데, 일정 반경안에 몬스터가 반응하고 타게팅을 시작하게 하고싶은데, 어떻게하면좋을까요? 2.제가 생각해본 방법은, (현재위치-플레이어) 해서 이 위치가 x값 이하면 nav Mesh를 enabled로 활성화하는건데 어떤가요? 3.한다면 update안에서 if(transform.position - target.position)
@goldmetal
@goldmetal 4 жыл бұрын
2번에서 X축만 보면 안되고 두 벡터의 거리로 보셔야 합니다. Vector3.Distance()를 사용해보세요. docs.unity3d.com/kr/530/ScriptReference/Vector3.Distance.html
@Estelelenath
@Estelelenath 4 жыл бұрын
@@goldmetal 3d공간인데 깜빡했네요! 감사합니다^^
@VintagesoUltree
@VintagesoUltree Жыл бұрын
nav mesh agent의 움직이는 원리를 혹시 알고 계실까요? FreezeVelocity() 등의 함수 내에서 rigid.velocity = vector3.zero로 설정해주는데도 불구하고 계속 움직일 수 있게 해주는 동력이 궁금합니다. 혹시 player와 같이 transform.position으로 움직이는 걸까요
@goldmetal
@goldmetal Жыл бұрын
NavAgent 컴포넌트가 매프레임마다 transform을 컨트롤한다고 생각해주시면 이해하실겁니다. 우리가 제어한건 리지드바디의 물리 속도이므로 트랜스폼 위치와는 무관하니 참고 바랍니다. (리지드바디에 물리 속도가 있으면 NavAgent의 이동 속도와 충돌하면서 매 프레임마다 이상한 이동을 보이게 됨)
@VintagesoUltree
@VintagesoUltree Жыл бұрын
@@goldmetal 넵 감사합니다! 검색해도 잘 안나왔는데 말끔히 해결됐습니다!
@scottmichael2023
@scottmichael2023 Жыл бұрын
안녕하세요 골드메탈님 항상 강의 잘 보고있습니다 혹시 저렇게 Physics.SphereCasltAll을 하지 않고 몬스터에 목표까지의 stopingDistance를 정해주고 코드에서 해당거리이내로 이동했을경우 공격하게끔 하는건 어떨까요? 방법의 차이라고 생각하는데 퍼포먼스면에서 어떤지 여쭤드리고 싶습니다.
@goldmetal
@goldmetal Жыл бұрын
좋은 생각입니다. 물리적 계산을 줄인거니 퍼포먼스적으로도 개선된 거라고 말씀드릴 수 있겠네요.
@scottmichael2023
@scottmichael2023 Жыл бұрын
@@goldmetal 답변 감사합니다!
@gu04005
@gu04005 3 жыл бұрын
의심하지 않을지어다... 원하는 동작이 안나와서 질문을 할려다가 코드를 2번 보니 제가 transform.forward를 vector3.forward라고 잘못써네요 이마 3번 치겠습니다 탁!
@수박입니다-t2z
@수박입니다-t2z 3 жыл бұрын
저 또한 같은 실수를 범하고 해답을 찾고있었습니다. 오오.. 의심하지 않을지어다...
@거저러
@거저러 2 жыл бұрын
if(other.getcomponet() != null) destroy(other.gameObject); 이 부분에서 Rigidbody 대신 Bullet으로 적었다가 박스콜라이져 사라져서 두시간동안 헤맸어요ㅜㅜ 강의 잘보고있습니다
@goldmetal
@goldmetal 2 жыл бұрын
화이팅입니다 😊
@쫑이-e4k
@쫑이-e4k 4 ай бұрын
AddForce(transform.forward...)랑 AddRelative(vector3.forward...)랑 차이가 있나요?
@goldmetal
@goldmetal 4 ай бұрын
AddForce는 월드 좌표계 기준, AddRelativeForce는 로컬좌표 기준으로 힘이 가해집니다
@쫑이-e4k
@쫑이-e4k 4 ай бұрын
@@goldmetal AddForce는 월드 좌표계 기준, AddRelativeForce는 로컬좌표 기준으로 힘이 가해지긴하는데 Addforce는 transform.forward이고 AddRelative는 vector3.forward일때는 두 함수가 항상 같은방향인것 같아서요
@goldmetal
@goldmetal 4 ай бұрын
@@쫑이-e4k 그렇게 하면 둘 다 로컬 기준이 되니까 차이가 없는 셈이 되겠네요
@찰떡-o8u
@찰떡-o8u Жыл бұрын
미사일 파티클 효과 부분에서요! 몬스터가 미사일을 발사하면 파티클이 나타나지 않습니다.. 씬뷰에서랑 프리펩을 그냥 오브젝트 생성했을 때는 파티클이 정상적으로 나옵니다. 이유를 모르겠습니다ㅜㅜ
@goldmetal
@goldmetal Жыл бұрын
파티클 선탁하시고 속성값중에 Space를 Local에서 World로 바꾸시면 될 것 같네요
@찰떡-o8u
@찰떡-o8u Жыл бұрын
@@goldmetal 감사합니다!!
@Ryosel
@Ryosel 2 жыл бұрын
골드메탈님 안녕하세요! 강의영상 잘 시청하고 있습니다. 플레이어랑 몬스터랑 충돌 시 몬스터가 회전하면서 밀려나는데 이 부분은 어떻게 조정할 수 있을까요?
@goldmetal
@goldmetal 2 жыл бұрын
몬스터 리지드바디의 Is Kinemetic을 체크해주시고 몬스터가 죽을 때 코드 상에서 이걸 다시 꺼주시면 됩니다. (꺼주지 않으면 넉백이 안됨) rigid.isKinematic = false;
@Ryosel
@Ryosel 2 жыл бұрын
@@goldmetal 감사합니다 :)
@이윤서-k2k
@이윤서-k2k Жыл бұрын
@@goldmetal 체크하니 enemy B가 플레이어가 사거리에 들어올 때까지만 이동하고 공격을 안하는데 왜 그럴까요..?
@goldmetal
@goldmetal Жыл бұрын
@@이윤서-k2k 공격은 또 공격에 대한 거리를 측정하고 공격하는 로직을 추가로 작성하셔야 합니다.
@I_am_jake1104
@I_am_jake1104 2 жыл бұрын
38:28 enemy끼리 팀킬 ㅋㅋㅋ
@nelnel0718
@nelnel0718 Жыл бұрын
골드메탈님 좋은 영상 감사합니다! 최근에 있었던 질문에 이어 이번 영상에서 궁금한 점이 생겨 질문을 하게 되었습니다. Enemy C을 향해 공격을하면 Enemy C의 전체가 색이 변하는 것이 아니라 입? 쪽 하얀 색 파트만 빨갛게 되고, 수류탄을 맞춰서 Die 시켜도 A랑 B 같은 다이나믹한 변화 없이 살짝 넉백만 되는 죽는 애니메이션 나오고 사라지는데 올바르게 한 것이 맞을까요!
@goldmetal
@goldmetal Жыл бұрын
Enemy C 경우는 구조가 조금 달라서 Mesh Renderer가 더 많이 있습니다. 그래서 하나의 meshRenderer 가 아닌 모든 meshRenderer 를 가지고 와서 색상을 변경해야 하는데요 이 내용은 다음내용인 보스전에서도 다루고 있습니다. 보스전에서 한번 보시면 Enemy C에도 적용시켜주시면 잘 됩니다.
@nelnel0718
@nelnel0718 Жыл бұрын
@@goldmetal 답변 감사합니다!
@김태영-s2w
@김태영-s2w 11 ай бұрын
골든메탈님 돌격 몬스터가 플레이어에게 부딫히면 플레이어가 밀쳐지는데 해결 방법이 없을까요?
@goldmetal
@goldmetal 11 ай бұрын
플레이어의 리지드바디 타입을 Kinematic으로 설정하는 방법이 있습니다. 단 이 모드에서는 자유낙하 같은 것이 안되므로 점프를 하려면 잠시 Dynamic으로 바꾸어야하니 참고 바랍니다.
@Kimamugae777
@Kimamugae777 Жыл бұрын
형님 혹시 애니메이터나 적로켓 방향조절을 Mesh Object 에서 하는 이유가 뭘까요??
@goldmetal
@goldmetal Жыл бұрын
위쪽 부모 오브젝트는 Nav Agent의 컨트롤만 있게하고 그거와는 별개로 다른 컴포넌트를 컨트롤 하기 위해 자식오브젝트로 나눠놓은 것입니다. 보통 이런 방식으로 한꺼풀 부모 오브젝트로 감싸두면 여러모로 활용할 수 있습니다.
@Kimamugae777
@Kimamugae777 Жыл бұрын
@@goldmetal 감사합니다
@이윤정-c3v
@이윤정-c3v Жыл бұрын
안녕하세요!! 골드메탈님 영상 보면서 열심히 공부하고 있습니다. Enemy3가 발사하는 미사일을 맞아도 피가 줄어 들지 않아요 캐릭터의 색도 변하지 않습니다. 어느부분을 수정해야 하나요?
@goldmetal
@goldmetal Жыл бұрын
색이 변하는 부분은 GetComponentsInChildren()로 모든 매쉬렌더러 가져와서 foreach문으로 하나씩 순회하며 모든 메테리얼의 색상을 바꿔주어야 합니다. 체력이 줄지 않는건 이것말고 다른 부분에 문제가 있는거 같네요 Enemy3만 그렇다면 태그나 콜라이더 확인해보세요
@김정민-w6r1s
@김정민-w6r1s 3 жыл бұрын
c타입 몬스터는 수류탄에 의해 죽었을때 넉백을 크게받지않는데 무엇이 문제일까요? A타입과 B타입은 피격시 색변경이 정상적으로 이루어 지는데 C타입만 일부분만 적용되는것과도 관련이 있을까요?
@goldmetal
@goldmetal 3 жыл бұрын
C타입만 구성요소가 좀 더 복잡해서 그렇습니다. 색상변경은 다음 강좌에서 다시 고치니 참고하시고 혹시 C타입의 리지드바디의 Mass가 높은지 한번 확인해보세요. Mass가 높으면 질량이 무거워지는 격이라 잘 안움직일 수 있습니다.
@김우민-b1d
@김우민-b1d 2 жыл бұрын
일반 몬스터에게 RaycastHit를 넣어서 Player를 공격하게 하려고 하는데, 공격은 안 하고 플레이어한테 계속 걸어가기만 하네요. 가까이 붙어도 플레이어를 밀어낼 뿐입니다. Debug.Log로 인식을 하는지 확인해 봤는데 플레이어가 없는데도 초당 50번 이상 무언가를 인식하고 있습니다. 영상의 코드랑 수십번 비교해 봤지만 다른 점이 없어서 고민 끝에 여쭤봅니다.
@김우민-b1d
@김우민-b1d 2 жыл бұрын
UnityEngine.Debug:Log (object) Enemy:Targerting () (at Assets/Scripts/Enemy.cs:66) Enemy:FixedUpdate () (at Assets/Scripts/Enemy.cs:95) 인식했을때 로그입니다.
@goldmetal
@goldmetal 2 жыл бұрын
플레이어의 레이어 설정 확인하시고 몬스터의 레이캐스팅 마지막 인자값인 레이어마스크에서 플레이어로 설정되어 있는지 확인해보세요. 최신버전이라면 Window > Analysis > Physics Debugger로 Scene 창에서 실시간으로 레이캐스팅 확인 가능해졌습니다.
@김민석-f3g6b
@김민석-f3g6b Жыл бұрын
안녕하세요 강좌 다 따라해보고 저만의 게임을 만들어보고싶어서 도전중입니다 다른 씬을 만들어 몬스터를 배치했을때 플레이어가 씬을 넘어가도 플레이어를 타겟하지 못하거나 target을 플레이어로 정해도 움직이지 않는 오류가 나옵니다 ㅠ
@goldmetal
@goldmetal Жыл бұрын
몬스터는 NavAgent를 사용해서 움직입니다. 해당 장면에 NAvMesh가 깔려있는지 Window > AI > Navigation 창 여서서 파란색 매쉬를 확인해보세요. 없다면 땅이 되어야 할 오브젝트를 Static으로 지정하시고 Navigation 창의 Bake 버튼을 눌러서 내비메쉬를 만드시면 됩니다. 몬스터 또한 이 파란색 매쉬에 가깝게 붙어있어야 동작하니 참고 바랍니다.
@slayersuper2763
@slayersuper2763 3 жыл бұрын
덕분에 잘 됐습니다! 하지만 EnemyC 오브젝트의 중심점이 발밑에 있어서 미사일을 쏠 때 지면을 스치면서 쏴지네요. 중심점을 위로 올리는 방법이 있나요? 아니면 발사 위치만 살짝 위로 조정하게 할 수 있나요?
@goldmetal
@goldmetal 3 жыл бұрын
미사일 프리펩에서 매쉬가 담긴 자식 오브젝트를 위쪽으로 올려주시면 됩니다.
@slayersuper2763
@slayersuper2763 3 жыл бұрын
@@goldmetal 감사합니다! 항상 잘 보고 있습니다
@user-uw9lf4xw4l
@user-uw9lf4xw4l 2 жыл бұрын
항상 좋은 강의 감사합니다!!! 그런데 전 enemy C의 미사일이 너무 바닥에 붙게 나오고, 미사일이 세로로 세워져서 발사되는데 혹시 수정 방법 아시나요?? 감사합니다!!
@goldmetal
@goldmetal 2 жыл бұрын
NavAgent나 스크립트는 부모 오브젝트에 있어야 하고, 미사일 겉모습만 자식 오브젝트로 있어야 합니다. 즉 미사일 겉모습 오브젝트만 Y축을 올리거나 각도를 조정하시면 됩니다.
@ser-zee
@ser-zee Ай бұрын
@@goldmetal 녕하세요 똑같은 문제에서 해결이 안되서 질문드립니다. 미사일은 enemyC의 자식오브젝트로 넣는게 아니라 미사일에 변수로 넣는거로 이해했는데 자식 오브젝트로 넣는거랑 같은건가요? 그리고 그 때 미사일 겉모습 오브젝트 위치나 각도 조정은 어떻게 하나요?
@goldmetal
@goldmetal Ай бұрын
@@ser-zee 미사일 프리펩만 이야기하는 겁니다. 겉으로 보이는 매쉬오브젝트를 프리펩의 자식으로 두면 Y축을 자유자재로 옮길 수 있기 때문입니다. 회전은 프리펩이 가진 NavAgent가 알아서 목표를 향해 회전하므로 신경쓰실 필요는 없습니다.
@ser-zee
@ser-zee Ай бұрын
@@goldmetal 넵 해결했습니다 감사합니다!
@기본-x6z
@기본-x6z 4 жыл бұрын
Bullet 스크립트가 원거리 공격 만들 때 만들어진 총알 스크립트 인가요??
@goldmetal
@goldmetal 4 жыл бұрын
네 그 스크립트 그대로 활용하는겁니다. 다만 근접공격일 경우 꼭 isMelee 체크해주세요.
@junha7299
@junha7299 3 жыл бұрын
강좌 정말 잘보고있습니다. 조금 오류가있어서 질문드려도 될까요? 몬스터BC가 Vector3.forward임에도 불구하고 앞에있어도 작동을 안하네요... 스크립트는 똑같이 했는데 약간 대각선에 플레이어가 있을때 실행이되네요 뭐가문제일까요?
@goldmetal
@goldmetal 3 жыл бұрын
몬스터의 실제 매쉬가 담긴 자식 오브젝트가 부모 오브젝트와 축이 맞지 않는 것 같습니다. 한번 자식 오브젝트 눌러서 Rotation이 0,0,0 이 아닌지 확인해보세요
@DungeonsSlimes
@DungeonsSlimes 2 жыл бұрын
"최고의 강의"
@greatyisoon-sin3402
@greatyisoon-sin3402 2 жыл бұрын
05:49 메쉬를 노랑색으로 변경한후 화이트로 말고 원래색으로 하게 하는 방식이 있을까요?
@goldmetal
@goldmetal 2 жыл бұрын
텍스쳐가 있다면 흰색으로 했을시 원래 색상으로 돌아옵니다. 텍스쳐가 아닌 Albedo 고유색상 을 가지고 있다면 미리 Color 타입의 변수로 저장해두어야겠네요
@하철우
@하철우 3 жыл бұрын
if (other.GetComponent() != null) 이 문장해석을 어떻게 하는 건가요 ?? 의도는 닿았을 시에 없어지는 거 인데 정확히 저 문장만 이해하기는 힘드네요 ㅠㅠ
@goldmetal
@goldmetal 3 жыл бұрын
'충돌한 오브젝트가 리지드바디를 포함하고 있다면' 입니다. 즉 상대방이 리지드바디를 가지고 있지 않다면 넘어가겠지요.
@nandagorae
@nandagorae Жыл бұрын
플레이와 몬스터가 부딪히면 플레이어가 미끄러지는 현상이 발생하고 있습니다. (ex: Enemy B가 달려들 때) 강의를 다 듣고 게임을 만든 후 테스트 하였을 때는 그러지 않았는데, 여러가지 소스코드를 추가하고 업데이트 해나가는 과정에서 발생한 문제같습니다. Friction을 0으로 제한하는 메테리얼을 생성하여 플레이어와 몬스터에게 적용해보았지만 여전히 해결되지 않고있는데 혹시 짐작가시는 부분이 있으시면 도와주시면 감사하겠습니다 선생님 ㅠㅠ
@goldmetal
@goldmetal Жыл бұрын
FreezeRotation 함수에 아래 코드를 추가해주세요 rigid.velocity = Vector3.up * rigid.velocity.y;
@JuYang1167
@JuYang1167 Жыл бұрын
항상 잘 보고 있습니다! 질문이 하나 있습니다! C타입의 몬스터를 영상을 참고해서 만들었는데 게임을 실행하면 scene에서는 정상적으로 보이는데 game화면에서는 보이지가 않습니다..그런데 또 플레이어에게 데미지는 들어오는 상황입니다. 혹시 어떤 문제인지 알 수 있을까요?
@goldmetal
@goldmetal Жыл бұрын
카메라는 Game창 크기, 비율과 동일하게 비춥니다. 카메라 위치와 각도를 적절하게 조절해보세요.
@JuYang1167
@JuYang1167 Жыл бұрын
아 죄송합니다. 제가 글을 잘못썼네요.. 안보이는게 C타입 몬스터의 투사체(미사일)를 말한 것이었습니다 ㅠㅠ
@goldmetal
@goldmetal Жыл бұрын
@@JuYang1167 미사일 발사 이후 일시정지 하고 미사일 매쉬의 위치가 어디에 있는지 Scene 창에서 직접 확인해보셔야겠네요
@강낭콩-f4y
@강낭콩-f4y 3 жыл бұрын
안녕하세요 골드메탈님 영상 항상 잘 보고 있습니다! 다름이 아니라 영상 속 3가지 몬스터 외에 다음 영상에서 나오는 보스몬스터 까지 만들었는데요 이 4마리의 몬스터들이 공격 시에(보스 몬스터는 점프 공격 시) 공격이 벽으로 들이받아지는 경우에 오류가 뜨더라구요 MissingReferenceException: The object of type 'BoxCollider' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. 이 오류를 더블클릭해서 들어가보니 4마리의 몬스터 모두 공격범위의 콜라이더 enabled를 false로 만들어주는 부분을 가리키더라구요 어떤 방식으로 이 오류를 해결해야 할 지 갈피가 잡히지 않아서 댓글 남깁니다^^ case Type.Melee: // 적 공격 코루틴 부분에서 근접공격 몬스터 case yield return new WaitForSeconds(0.2f); meleeEnemyAttackZone.enabled = true; yield return new WaitForSeconds(1f); meleeEnemyAttackZone.enabled = false; // 이 부분으로 오류 클릭시 들어오게 됩니다 yield return new WaitForSeconds(1f); break;
@goldmetal
@goldmetal 3 жыл бұрын
콜라이더가 벽에 닿아서 Destroy되는 문제입니다. 이 내용은 41:50에서 다루었어요.
@user-ht3jfy9zx5
@user-ht3jfy9zx5 Жыл бұрын
안녕하세요 골메님! void Targeting() { float targetRadius = 1.5f; float targetRange = 3f; RaycastHit[] rayHits = Physics.SphereCastAll(transform.position, targetRadius, transform.forward, targetRange, LayerMask.GetMask("Player")); if (rayHits.Length > 0 && !isAttack) { StartCoroutine(Attack()); } } IEnumerator Attack() { isChase = false; isAttack = true; anim.SetBool("isAttack", true); yield return new WaitForSeconds(0.2f); meleeArea.enabled = true; yield return new WaitForSeconds(1f); meleeArea.enabled = false; isChase = true; isAttack = false; anim.SetBool("isAttack", false); } 이렇게 썼는데 프라이빗 멤버인 Targeting을 사용하지 않는다고 하는데 어떻게 해야 되나요?
@goldmetal
@goldmetal Жыл бұрын
아직 Targeting 함수를 사용하지 않아서 그렇습니다. 나중에 호출하게 되면 자연스럽게 사라지는 안내 메세지이니 크게 신경쓰시지 않으셔도 됩니다.
@부쉼표
@부쉼표 Жыл бұрын
플레이어가 몬스터에 닿으면 위로 뜨는 (몬스터를 타고 오르는 듯한) 현상이 일어 나는데 어떻게 해야할까요….
@부쉼표
@부쉼표 Жыл бұрын
플레이어가 몬스터에 밀리는거 같네요…어떻게 해결해야 할까요….
@goldmetal
@goldmetal Жыл бұрын
여러가지 방법이 있겠지만 쉬운방법은 플레이어의 리지드바디 Mass(질량)을 크게 늘리면 됩니다. 다만 이렇게하는경우 점프의 파워도 같이 커져야 정상 점프가 가능하다는 점 참고 바랍니다.
@zzongify
@zzongify 3 жыл бұрын
골드메탈님 비쥬얼 C# 폰트는 어떤거 사용중이신가요??
@goldmetal
@goldmetal 3 жыл бұрын
Consolas 입니다
@김대영-u2l
@김대영-u2l Жыл бұрын
골드메탈님 혹시 Enemy A에서 공격범위로 EnemyBullet을 만들었는데 EnemyBullet이 Player랑 Enemy A와 부딫힐 때 마다 멀어지는데 어떻게 해결해야하나요 ㅠㅠ
@goldmetal
@goldmetal Жыл бұрын
Enemy 와 EnemyBullet 은 서로 충돌하지 않도록 Edit > Project Settings > Physics > Collision Matrix에서 두 레이어가 겹치는 체크를 풀어주세요. 플레이어는 맞는 즉시 데미지 주면서 오브젝트 파괴 혹은 비활성화하면 됩니다.
@김찬영-s9n
@김찬영-s9n 3 жыл бұрын
궁금한게있는데 다른건다 잘됩니다. 근데 몬스터 B와 C가 게임실행시 공격모션을 한번은 무조건실행하더라고요.. 어떻게 해야할지 모르겠네요 방법이 있을까요? Has Exit Time도 꺼놨습니다 그냥 게임실행하자마자 공격모션을 한번 실행하고 플레이어를 따라다닙니다.
@goldmetal
@goldmetal 3 жыл бұрын
Idle 상태가 기본 (노란색)이어야 합니다. 상태에 우클릭 하시고 Set Default State로 지정하실 수 있어요
@gamdori
@gamdori 4 жыл бұрын
귀엽게 생긴애들 셋이 달려드니 마지막엔 좀 긴장감있기도 하네요
@gusn8030
@gusn8030 2 жыл бұрын
골드메탈님 플레이어가 원거리 몬스터보다 z쪽에 있을때만 원거리 몬스터가 공격하고 -z쪽이나 옆에 있을땐 공격하지 않고 계속 따라오기만 하는데 어떻게 해야 하나요?
@goldmetal
@goldmetal 2 жыл бұрын
원거리몬스터만 스피어캐스트를 바꿔쥐면 됩니다. 36:20 에서 Radious를 크게 잡고 Range를 0으로 하면 자신 주변으로 원형태로 범위가 되므로 전방위로 플레이어를 감지할 수 있습니다.
@upzerg
@upzerg 3 жыл бұрын
몬스터가 한번 공격한뒤에는 공격 애니메이션이 재생되질 않아요 ㅠㅠ 다시 멀리 도망가면 따라와서 때리긴 하는데 그럴때마다 공격 애니메이션도 한번만 재생되네요...ㅠㅠ
@upzerg
@upzerg 3 жыл бұрын
아 해결했어요 Attack->Walk 에서 HasExitTime이 체크되어 있었네요 ..후...
@길한낮
@길한낮 3 жыл бұрын
골메님 영상 잘 보고 있습니다! 에너미c가 쏜 미사일을 플레이어가 데미지를 받고 사라질때도 있고 안받고 그냥 튕겨날때가 있어요. 어떻게 해야할까요? 튕겨나간 미사일들은 사라지지않아요 ㅜㅜ
@goldmetal
@goldmetal 3 жыл бұрын
미사일 콜라이더에 IsTrigger 체크 하셨는지 한번 확인해보세요.
@노성엽-y2k
@노성엽-y2k 3 жыл бұрын
bullet 스크립트에 enemybullet은 언제 넣어두셧나여...?
@goldmetal
@goldmetal 3 жыл бұрын
태그말씀이라면 37:44 입니다.
@nowons100
@nowons100 3 жыл бұрын
골메님 GameObject 타입으로 선언한 bullet변수는 Awake에서 초기화 하지 않아도 Instantiate에서 자동으로 초기화 되나요?
@goldmetal
@goldmetal 3 жыл бұрын
아뇨, 인스펙터 창에서 프리펩을 넣어주셔야 합니다.
@nowons100
@nowons100 3 жыл бұрын
@@goldmetal 아하.. public으로 선언했었네요.. 고맙습니다~
@nowons100
@nowons100 3 жыл бұрын
@@goldmetal 한가지 더 질문드릴게 있는데요. Missile 프리팹에서 메쉬필터와 메쉬레더러를 Missile 하위 오브젝트로 넣는 이유가 있나요? 오히려 씬에서 셋팅할 때 더 헷갈리는거 같은데요..
@goldmetal
@goldmetal 3 жыл бұрын
@@nowons100 미사일을 따로 Y축을 조절해야 하는데 이걸 LocalPosition에서 해주기 위함입니다. 부모 오브젝트 위치값은 0,0,0 이므로 Instantiate 할 때 헷갈리지 않겠지요.
@a.b.c.d.e.f.g.h.i.j
@a.b.c.d.e.f.g.h.i.j 3 жыл бұрын
몬스터 A가 공격을 할 때 처음에만 플레이어가 피격되고 플레이어가 다른 곳으로 움직이지 않으면 피격되지 않는데 어떻게 하나요?
@a.b.c.d.e.f.g.h.i.j
@a.b.c.d.e.f.g.h.i.j 3 жыл бұрын
코루틴 함수에서 meleeArea.enabled = false; 를 안 해놔서 그런 거였네요... 댓글 달자마자 갑자기 생각나서 고쳤습니다!
@기본-x6z
@기본-x6z 3 жыл бұрын
나중에 시네머신 기능만 따로 한 강의로 올려주실 수 있으신가요... ㅠㅠ
@goldmetal
@goldmetal 3 жыл бұрын
제 강좌는 예제 위주라 아직 기능만 따로 올리는 경우는 미정입니다. 대신 이미 유니티 코리아에서 시네머신 튜토리얼을 한번 했으니 아래 영상 참고하시면 도움이 되실겁니다. kzbin.info/www/bejne/naGofXuebM58jJY&ab_channel=UnityKorea 2D는 아래 링크로 참고해주세요. blogs.unity3d.com/kr/2018/07/17/cinemachine-for-2d-tips-and-tricks/
@잘보고갑니다-b7r
@잘보고갑니다-b7r 2 жыл бұрын
원거리형 몬스터가 플레이어랑 닿았을때 공격하는데 뭐가 문제인지 모르겠어요.. 다른 애들은 잘 공격하는데 얘만 이상해서 애먹고 있네요.. 참고로 버전은 2021.3.7f1 버전입니다.
@잘보고갑니다-b7r
@잘보고갑니다-b7r 2 жыл бұрын
아아 제가 transform.forward 인데 Vector3.forward로 했네요 ㅎㅎ.. 해결했습니다! 혹시 Vector3.forward랑 transform.forward 차이를 알수 있을까요?
@상인-k7o
@상인-k7o 2 жыл бұрын
안녕하세요 골드메탈님 잘보고있습니다 영상을보며 따로 게임을 만들고있는데 영상에선 애드포스에 힘을 조금만줘도 많이이동하는데 저는 200 300 이렇게줘야 나아가는게 보이거든요... 왜이러는지 모르겠습니다 3d 입니다!
@goldmetal
@goldmetal 2 жыл бұрын
두번째 인자값 ForceMode.Impulse 넣어주셔야 해요.
@B6jePV61
@B6jePV61 Ай бұрын
@@goldmetal 저도 이 댓글과 마찬가지로 영상이랑 똑같은 숫자를 입력했더니 영상과 다르게 조금만 가다가 말아서 수치를 많이 넣어야 영상처럼 움직이네요. ForceMode.Impulse 도 넣었습니다!
@nana_0427
@nana_0427 3 жыл бұрын
Thankyu
@user-uw9lf4xw4l
@user-uw9lf4xw4l 2 жыл бұрын
감사합니다! 근데 enemyA 만 공격을 받을때 원하는 색으로 변하고 다른 적들은 적용되지 않습니다, 해결방법아시나요?
@goldmetal
@goldmetal 2 жыл бұрын
다른 적을 공격할 때 콘솔 창에 에러가 나타나는지 확인해보시는 것이 좋겠습니다. 그리고 C 타입경우 구조가 다르기 때문에 전체 매쉬렌더러를 가지고와서 색을 변경해야 합니다. 이에 대한 내용은 보스 만들기에서 같이 다루니 지금은 그냥 진행해주셔도 됩니다.
@I_am_jake1104
@I_am_jake1104 2 жыл бұрын
돌격형 몬스터 끝냈는데 MissingReferenceException: The object of type 'BoxCollider' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. Enemy+d__18.MoveNext () (at Assets/QuarterView 3D Action BE5/Scripts/Enemy.cs:122) UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at :0) 라고 오류가 뜨고 boxcollider컴포넌트가 내비게이션 컴포넌트보다 아래에 있는데 어떻게 해요?(오류가 뜬후에 돌격몬스터가 공격을 안해요)
@goldmetal
@goldmetal 2 жыл бұрын
42:07 근접공격을 담당하는 박스콜라이더가 Bullet 스크립트에 의해 파괴되서 그렇습니다. Bullet 스크립트에서 if문으로 바닥이나 벽에 닿을 때 파괴되지 않도록 예외처리 해주셔야 해요.
@I_am_jake1104
@I_am_jake1104 2 жыл бұрын
@@goldmetal 코드 수정은 어떻게해요?
@goldmetal
@goldmetal 2 жыл бұрын
@@I_am_jake1104 41:47 부터 다루고 있습니다.
@오현준-x8w
@오현준-x8w 2 жыл бұрын
typeB의 적은 공격을 플레이어와 거리가 좀 있을때 합니다. 무엇이 문제점인지 모르겠네요..
@goldmetal
@goldmetal 2 жыл бұрын
23:18 에서 보듯이 돌격형 몬스터의 플레이어 감지용 레이캐스트 길이가 더 큽니다. 원하시는 범위에 맞게 targetRange 수치를 조절하시면 됩니다.
@오현준-x8w
@오현준-x8w 2 жыл бұрын
@@goldmetal 그 b가 공격할때 플레이어한테 좀 멀리서 떨어져서 공격을 해서 플레이어한테 데미지가 들어가지가 않아요
@초코맛누룽지
@초코맛누룽지 4 жыл бұрын
근데 그냥 몬스터들 이즈키네마틱으로 설정하면 안되나요? 뭔가 이유가 있나?
@goldmetal
@goldmetal 4 жыл бұрын
NavMesh 로 움직이니 설정해도 됩니다. 죽을 때만 다이나믹으로 바꿔주면 되겠네요.
@이재훈-u4d8t
@이재훈-u4d8t 2 жыл бұрын
코드는 모두 동일한데 미사일이 Enemy 위치에서 발사가 안되고 옆에서 발사가 되는데 뭐가 문제일까요?
@goldmetal
@goldmetal 2 жыл бұрын
미사일 프리펩 클릭하셔서 Position 이 0, 0, 0 인지 확인해보세요
@황초-t1e
@황초-t1e 3 жыл бұрын
일반형 몬스터까지 만들고 실행해서 몬스터 때려보니 한대쳣는데 두대맞는데 이거 어떻게하나요..? 몬스터 공격범위 박스콜라이더도 같이 공격 맞는거같아요
@황초-t1e
@황초-t1e 3 жыл бұрын
레이어로 EnemyBullet 이랑 PlayerBullet 충돌 안하게 물리레이어 설정하고 망치 레이어 Player 에서 PlayerBullet으로 변경해서 2대 안맞게 해결했는데 이렇게 해도 상관없나요?
@goldmetal
@goldmetal 3 жыл бұрын
네 잘하셨습니다.
@서동건-n7r
@서동건-n7r 2 жыл бұрын
첫번째 몹이랑 두번째 몹이 데미지가 안들어옵니다.ㅠㅠ 미사일 쏘는 몹은 잘 되는데….. 어떻게 하죠?
@goldmetal
@goldmetal 2 жыл бұрын
몬스터 프리펩 선택하시고 태그와 레이어 확인해보세요.
@setda
@setda 3 жыл бұрын
안녕하세요 골드메탈님 영살은 잘보고 있음니다 혹시 에너미 타입c 가 돌진을 하고 미사일은 앞으로 나가질 않고 제자리 회전만 하는데 어떻해 해야 하나여?
@goldmetal
@goldmetal 3 жыл бұрын
완선된 프리펩 선택해서 몬스터타입이 B로 되어있는지 확인해보세요. C타입으로 설정해주셔야 합니다.
@setda
@setda 3 жыл бұрын
@@goldmetal 타입은 c 타입으로 설정이 되어 있네요,,,, ㅠ,ㅠ rigidbod.velocity = transform.forward * 20; 이 코드를 지우면 움직이는 건 제대로 하지만 그래도 미사일은 않움직이 네요(아 이유를 찾았네요 리지드 바디가 아닌 리지드 블릿인데 제가 코드를 작성ㅇ을 잘못 하였네요)
@goldmetal
@goldmetal 3 жыл бұрын
@@setda 미사일 스크립트에 플레이어 들어가있는지 확인해보세요. 미사일 발사할 때 몬스터가 미사일에게 플레이어 넘겨주어야 합니다
@최준영-t6q
@최준영-t6q 3 жыл бұрын
몬스터들이 공격은 잘하지만 제 공격에는 피격당하지 않아요... 어떡해 해야하나요? 체력도 줄지않아요ㅠㅠㅠㅠ
@goldmetal
@goldmetal 3 жыл бұрын
망치의 근접범위 오브젝트와 총알 프리펩의 태그가 Bullet인지 확인해주시고 Enemy 스크립트에서 OnTriggerEnter에 if문 조건 태그도 Bullet인지 확인해보세요
@dhwlddj5525
@dhwlddj5525 3 жыл бұрын
이거 플레이 스토어에 올도 되나요?
@dhwlddj5525
@dhwlddj5525 3 жыл бұрын
올려도
@dhwlddj5525
@dhwlddj5525 3 жыл бұрын
응용해서요
@goldmetal
@goldmetal 3 жыл бұрын
네 가능합니다. 좋은 결과 있길 바랍니다.
@안대훈-o8q
@안대훈-o8q 3 жыл бұрын
제가 아무생각없이 Enemy A 와 Enemy B를 프리펩에 저장을 했는데 문제는 없겠죠?
@goldmetal
@goldmetal 3 жыл бұрын
이후 강좌에서 프리펩 저장하니 괜찮습니다.
@안대훈-o8q
@안대훈-o8q 3 жыл бұрын
몬스터를 잡으면 일정확률로 아이템이 나오게 할수도 있나요?
@goldmetal
@goldmetal 3 жыл бұрын
네, 죽기 직전에 미사일 생성하듯이 아이템 프리펩을 Instantiate로 생성하면 됩니다.
@상민아재
@상민아재 3 жыл бұрын
bullet 스크립트를 public int damage; public bool isMelee; void OnCollisionEnter(Collision collision) { if (collision.gameObject.tag == "Floor") { Destroy(gameObject, 3); } } void OnTriggerEnter(Collider other) { if(!isMelee && other.gameObject.tag == "Wall") { Destroy(gameObject); } } 수정을 했는데도 몬스터가 캐릭터를 피격할시 한번만 데미지를 입고 그 다음 부터는 공격 애니만 적용될뿐 데미지는 받질 않더라구요. isMelee 역시 근접형이라 체크를 했구요. 혹시나 해서 멀리 갔다가 다시 몬스터에게 근접할때 이때 한번 데미지를 입고 또 그 다음은 반응이 없습니다. bullet 인스펙터에 박스콜라이더가 한번 활성화 되면서 데미지를 입고 다시 비활성화 되고 데미지 입힐때 또 활성화되고 이렇게 반복적으로 되어야 하는것 같은데 한번 활성화 된후에 반응이 없습니다. 그리고 웨폰무기 스크립트에 public BoxCollider meleeArea; 가 있어서 캐릭터가 Melee무기를 들고 몬스터에게 근접할때 캐릭터는 데미지 한번 입고 위같은 경우가 생기면서 몬스터가 캐릭터 근접무기에 의해 데미지를 받아 죽는 경우가 생겼습니다.
@goldmetal
@goldmetal 3 жыл бұрын
혹시 콘솔창에 에리가 있는지 확인해보세요. 많은 분들이 근접공격 영역 오브젝트가 Bullet 스크립트에 의해 Destory되는 상황을 겪으셨습니다. 콜라이더 영역이 바닥에 닿아도 파괴되지 않도록 Bullet 스크립트에 태그를 사용한 if문 조건 넣어주세요.
@salking0224
@salking0224 4 жыл бұрын
메탈님 죄송 하지만 비쥬얼 스튜디오 2020 이랑 2017이랑 다른 가요?
@goldmetal
@goldmetal 4 жыл бұрын
비주얼 스튜디오는 프로그래밍 IDE(통합개발환경) 이라서 C#뿐만 아니라 다양한 언어와 빌드 환경을 제공하고 있습니다. 2020은 2017보다 더 다양한 언어와 환경이 추가되었을 수 있겠군요. 유니티는 꼭 최신버전을 따라갈 필요는 없습니다. 오히려 최신 버전은 호환이 맞지 않아서 실행되지 않는 경우가 많으니 아직은 2017 버전을 추천드립니다.
@salking0224
@salking0224 4 жыл бұрын
정말 감사합니다ㅠㅠ 제가Q&A올릴때마다 친절하게 답변을 너무 감사드려요!
PRANK😂 rate Mark’s kick 1-10 🤕
00:14
Diana Belitskay
Рет қаралды 12 МЛН
Players push long pins through a cardboard box attempting to pop the balloon!
00:31
قصص وعبر
2:28
Better Thinking التفكير السليم
Рет қаралды 4,5 М.
PRANK😂 rate Mark’s kick 1-10 🤕
00:14
Diana Belitskay
Рет қаралды 12 МЛН