2D 플랫포머 - 플레이어 이동 구현하기 [유니티 기초 강좌 B15]

Поделиться
HTML-код
  • Опубликовано: 10 фев 2025

Комментарии • 1,4 тыс.

  • @goldmetal
    @goldmetal  4 года назад +55

    24:08 이후로 계속 문워크 되는 버그가 있습니다.
    GetButtonDown -> GetButton 으로 바꾸어주시면 문워크 없이 잘 실행됩니다.

    • @illucoder595
      @illucoder595 4 года назад +1

      계속 문워크해요 ㅠㅠ 한글자한글자 따라썼는데
      한시간반동안 낑낑해다가 미치겠네요 진짜 ㅠㅠ

    • @illucoder595
      @illucoder595 4 года назад +2

      using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;
      public class PlayerMove : MonoBehaviour
      {
      float maxSpeed; //최대속도변수 선언
      Rigidbody2D rigid; //Rigidbody2D -변수명 rigid 선언
      SpriteRenderer spriteRenderer;
      void Awake()
      {
      rigid = GetComponent(); //rigid 변수 초기화
      maxSpeed = 3f; //최대속도
      spriteRenderer = GetComponent();
      }
      void Updata()
      {
      if(Input.GetButtonUp("Horizontal")){
      rigid.velocity = new Vector2(rigid.velocity.normalized.x*0.5f,rigid.velocity.y);
      //키를 떼면,x축 속도 기본 0.5배, y축 속도는 그대로
      }
      if(Input.GetButton("Horizontal")){
      spriteRenderer.flipX = Input.GetAxisRaw("Horizontal") == -1;
      //키를 누르고 있으면, 왼쪽누르면 -1되서 좌우바꾸기
      }
      }
      void FixedUpdate()
      {
      float h = Input.GetAxisRaw("Horizontal"); //h에 키를 누르면 입력 오른쪽=1,왼쪽=-1
      rigid.AddForce(Vector2.right*h,ForceMode2D.Impulse); //h * 오른쪽곱해서 힘을 줌

      if(rigid.velocity.x > maxSpeed) //x속도가 maxSpeed 보다 크면, 속도 maxSpeed로 고정
      rigid.velocity = new Vector2(maxSpeed,rigid.velocity.y);
      else if(rigid.velocity.x < maxSpeed*(-1)) //x속도가 -maxSpeed 보다 작으면(왼쪽으로 갈때) 속도는 -maxSpeed로 고정
      rigid.velocity = new Vector2(maxSpeed*(-1),rigid.velocity.y);
      }
      }
      주석이 조금 더럽죠... 너무 멍청해서 일일히 주석달아가며 20분정도 분량 계속 돌려보면서 공부중입니다.
      그런데 좌우반전이 계속 안되네요 너무 답답해서 댓글달아요ㅠ

    • @goldmetal
      @goldmetal  4 года назад +12

      @@illucoder595 GetButton 조건문 아래에 Debug.Log(Input.GetAxisRaw("Horizontal")); 을 추가해서 인풋값 잘 들어오는지 확인해봅시다.
      인스펙터 창에서 플레이어 스프라이트렌더러에 flipX를 직접 조작해봐서 잘 반전되는지도 확인해보구요.

    • @illucoder595
      @illucoder595 4 года назад +2

      @@goldmetal 감사합니다
      당직이라서 집가서 함해볼께요ㅠ감사합니다

    • @illucoder595
      @illucoder595 4 года назад +8

      @@goldmetal void Updata()
      ㅋㅋㅋ... update를 updata로 써놓고 안된다고 찡찡대고 있었네요.ㅠㅠ
      디버그.로그 하면서 하나하나 풀어가다보니 답이 나옵니당
      제대로 문제 찾아보려 하지도 않고 계속 여쭤보고 귀찮게 해드려 죄송합니다..
      강의 너무 잘보고있습니다 감사해요 !!

  • @kungburibab
    @kungburibab 3 года назад +3

    24:17 여기서 26번째줄 코드 순간 이해 안 갔는데 저렇게 괄호 없이 비교연산자를 써도 두항 비교해서 boolean형태로 값을 잘 내뱉는군요.. 좋은 공부가 됐어요... 제가 26번째 줄 이해가 안가서 저렇게 안짜고 if문으로 조건을 쪼갰거든요?그리고 좌우 불린 값을 넣어줄 변수를 따로 선언해야 했어요.그렇게 짜보고..다시 이 코드 보고 이해하고나니 참 코드를 간결하게 잘 짜시는구나...싶었어요..역시 대단하세용.

  • @니모네모-d4l
    @니모네모-d4l 2 года назад +1

    감사합니다.

    • @goldmetal
      @goldmetal  2 года назад

      어이쿠 슈퍼땡스 감사합니다! 😊😊

  • @레거시-i5n
    @레거시-i5n 3 года назад +72

    최신 버젼에서는 Physics Material 2D 의 위치가 변경되었으니 못찾으시는 분들은
    Create -> 2D -> Physics Material 2D로 가면 찾으실 수 있습니다.

  • @heartl4882
    @heartl4882 5 лет назад +5

    강의영상이 항상 알차고 지루하지 않아서 좋아요~ 좋은 영상 감사해요~~

  • @김김김김준
    @김김김김준 5 лет назад +29

    아니 형 왜 아직도 구독자가 7천이야... 이렇게 깔끔하게 잘 설명하는데 아직도 골드메탈 형을 모르는 예비 게임개발자들이 있단말야??

  • @xeroname
    @xeroname 5 лет назад +36

    *게임 개발을 위해 유니티를 배우는 입문자들이 꼭 봐야 할 강좌*

  • @이추김-r5u
    @이추김-r5u 2 года назад +2

    최고입니다 골드메탈님 제가 어려워 하던 캐릭터 움직임을 간단하게 설명 해주셔서 감사합니다 구독 눌렀습니다

  • @므겡
    @므겡 5 лет назад +13

    c++ 자바는해봤어도 c#경험도없고 유니티도 경험이없어서 걱정 많이했는데 너무재밌게배우고있어요! 다음진도 기대하고있습니다!

    • @ROCKY-iw5xr
      @ROCKY-iw5xr 5 лет назад +3

      므겡님 게임 만든다는 게 유니티 엔진으로 만든다는 거였구나...

  • @도마토-k6r
    @도마토-k6r 4 года назад +20

    빙판위에 있는것처럼 조금씩 미끄러지는게 싫으시다면 //Stop Speed 에서 코드
    (rigid.velocity.normalized.x * 0.5f, rigid.velocity.y);
    중 f값을 0.0000001 같이 미세하게 설정하면 미끄러지는것처럼 보이지않습니당

  • @0_ball
    @0_ball 4 года назад +10

    캐릭터 걸림 현상 해결법
    캐릭터의 Box 콜라이더를 Capsule 콜라이더로 바꾸고
    20:48캐릭터의 돌아감을 막기위해 Rigidbody 에서 Contraints를 열어
    Freeze Rotation □z 를 체크한다!
    이거때문에 어리둥절 했네요 ㅋㅋ

    • @goldmetal
      @goldmetal  4 года назад +1

      B17의 영상설명에서의 추가정보로 다룬 복합콜라이더도 참고해주세요

    • @SM-zh2qk
      @SM-zh2qk 4 года назад

      Freeze Rotation z 체크해도 걸려서 댓글 찾아보고 있었는데
      감사합니닷!

    • @user-Ribostar
      @user-Ribostar 3 года назад

      이거땜에 한참 헤멨는데!!! 감사합니다ㅠㅠㅠ

  • @찬흠-r3t
    @찬흠-r3t 3 года назад +1

    웬만하면 댓글 잘 안다는 편인데 영상이 너무 유익해서 댓글 답니다. 잘 배우고 있습니다 감사합니다!

  • @그럼날아봐
    @그럼날아봐 5 лет назад +8

    트위치로 방송하시고 다시 편집하셔서 유튜브에 올려주시니 너무너무 감사합니다!!!

    • @고라니
      @고라니 4 года назад

      좀만 있으면 30000찍겠다!

  • @I테크
    @I테크 2 года назад +3

    24:59 2021이후 이 코드를 비주얼스크립터로
    수동으로 옮겼더니 getAxisRaw값이 0일때에도
    오른쪽을 바라보게 되어 있어서 switch문을 사용하여
    0일때는 작동이 없게 했더니 영상처럼 정상작동하였습니다

  • @R5dongja
    @R5dongja 2 года назад +14

    캐릭터 이동중 플랫폼과 캐릭터의 콜라이더가 충돌해 멈추는 현상이 있습니다.
    캐릭터의 콜라이더를 원형으로 갈아끼우시면 해결됩니다.

    • @7bbo406
      @7bbo406 2 года назад

      왜 멈추는지 이거로 한참 해맸네요. 감사합니다.
      괜히 사각 콜라이더로 해서 고생 했네요.

    • @kmg05027
      @kmg05027 Год назад

      하 진짜 진짜 감사합니다 !!! 이거 때문에 제가 뭘 잘못한줄 알고 맘고생했는데..!

    • @tangojason
      @tangojason Год назад

      와 완전 감사드려요! 갑자기 멈추는게 이것때문이었네요...

    • @rozena5114
      @rozena5114 Год назад

      오 이거때매 플랫폼 이리저리 콜라이더 만졌었는데 플레이어 콜라이더 문제였군요 ㅋㅋㅋ 감사합니다

    • @호랑이-x2l
      @호랑이-x2l 10 месяцев назад

      너무 감사합니다......!!!!

  • @hundred_100
    @hundred_100 Год назад +1

    영상 진짜 잘 보고 배우고 있습니다..!! (C언어 안 배웠으면 아예 C# 코드 이해가 안됐을 듯 하네요..ㅋㅋ) 너무너무 감사합니다 이해가 아주 잘되요!

    • @goldmetal
      @goldmetal  Год назад

      잘 봐주셔서 감사합니다 🤗

  • @reals9948
    @reals9948 5 лет назад +16

    영상 너무 잘보고있습니다~
    질문이 있는데
    rigid,AddForce(vecotr.right * h , ForceMode2D,Impulse);로 플레어를 이동 시키는거랑
    rigid.velocity = new Vector2(maxSpeed*h,rigid.player.y); 이렇게 이동시키는거랑
    차이가 뭔가요?ㅠㅠ

    • @goldmetal
      @goldmetal  5 лет назад +8

      Addforce는 주어진 벡터크기만큼 힘을 주는 것이고, velocity는 직접 속도를 바꾸는 것입니다. 때문에 외부 환경에 따라서 결과 모습이 다르게 나올 수 있어요. 속도를 항상 유지하고 싶으시면 후자가 조급 편합니다.

  • @GanwoomaG
    @GanwoomaG 4 месяца назад +1

    3:00
    양옆으로 이동하는게 아니라 구르는데요 어떻게 해야하죠
    +해결했습니다. 리자드바디 2d에서 Constraints>Freeze Rotation에서 z를 체크해야 하네요.
    +20:39에서도 나오네요ㅋㅋ 좀만 더 볼걸...

  • @BONOBONOSARANG
    @BONOBONOSARANG 3 года назад +7

    유니티 공부가 너무 재밌습니다. 감사드립니다.
    이번편을 보고 만들다가 의문이 든 문제가있습니다.
    캐릭터를 좌우로 움직일때 우측 방향키를 누른상태에서 좌측 방향키를 누르고 그후에 우측 방향키를 떼면, 캐릭터가 우측을 보면서 좌로 가네요^^;; 해결방법이 없을까요?
    PS : 해결했습니다. 좌우 플립하는걸 속도값으로 바꿔보니까 잘 작동됩니다 >.

    • @illilliiil9663
      @illilliiil9663 4 месяца назад

      저도 같은 문제인데 플립하는 걸 속도값으로 바꿀려면 어떻게 해야하나요?

  • @witchcraft8436
    @witchcraft8436 2 года назад +2

    강의 정말 잘 보고 있습니다 올려주셔서 감사해요!!

  • @김지헌-b6i
    @김지헌-b6i 4 года назад +33

    20:39 20:39 20:39 플레이어가 자꾸 넘어지거나 데굴데굴 구를 때 해결하는 방법

    • @장효재-h4y
      @장효재-h4y 4 года назад

      사랑해여ㅠㅠ 못하고있었는데

    • @silverlemon2947
      @silverlemon2947 4 года назад

      @@장효재-h4y 왜 말끝에 여를 붙여요?

    • @고철페카
      @고철페카 4 года назад

      감사 오지게 박겠습니다!!!!!!!!!

    • @silverlemon2947
      @silverlemon2947 4 года назад

      @한지혁 시비가 아니라 고쳐준겁니다 시비걸지 마세요

    • @dlaq310
      @dlaq310 4 года назад

      내껀 왜 데굴데굴 구르지 하고 웃퍼하고 있었는데 감사합니당

  • @헤헿-h7v
    @헤헿-h7v 10 месяцев назад +1

    와 이거 33:15 부분에 분명히 영상하고 똑같이 따라했고 진짜 몇시간씩 뚫어져라 봤는데 결국 포기하고 몇주간 유기했는데 else 부분을 else if (rigid.velocity.normalized.x != 0)로 변경하니까 정상적으로 동작이 넘어가지네요ㅠㅠㅠ 어디가 틀린지도 몰라서 이 부분을 설명하기도 애매해 질문도 못드렸서요..

  • @레거시-i5n
    @레거시-i5n 3 года назад +3

    골드메탈 교수님, normarlized에 대해서 추가 질문 드립니다.
    15:38 벡터크기를 1로 만든 상태라고 하셨는데, 이는 normalized 자체가 가지고 있는 기본 값이 1이며,
    아래에서 사용한 rigid.velocity.normalized.x * 0.5f 이 처리문으로부터, 기본 값을 0.5f로 변경하고 키 패드를 때었을 때, 순간적으로 MaxSpeed=3으로
    달리고 있던 플레이어 오브젝트는 normalized에 설정한 0.5f 단위의 힘까지 낮춰지며, 서서히 멈추게 된다는 식으로 이해하면 될까요...?

    • @goldmetal
      @goldmetal  3 года назад

      네 그렇습니다. 플랫포머 플레이어의 움직임 스타일을 잡는 부분이라
      다른 방식으로 바꾸어도 됩니다.

  • @shk3593
    @shk3593 2 года назад +1

    오늘도 많이 배웠네요. 항상 감사히 잘 보고 있습니다. 감사합니다~

  • @littlerookey5466
    @littlerookey5466 3 года назад +5

    혹시 캐릭터 Sprite가 1개가 아닌 여러부분, 얼굴, 눈, 팔, 손, 발 등등, 으로 나뉘어져 있다면, 단순히 transform.scale.x를 1 에서 -1 로 바꿔주시면 됩니다!!!!

  • @썰제작봇
    @썰제작봇 4 года назад +1

    진짜 정말 좋은 강좌예요 재미도있고 머리에 쏙쏙 들어와요

  • @REPXNS
    @REPXNS 5 лет назад +18

    움직이다가 멈추는 현상 박스콜라이더 2D에서 캡슐 콜라이더 2D로 변경해서 해결했습니다.
    그런데 왜 캡슐 콜라이더 2D로 변경하니 해결이 된건가요?? 다른 댓글을 보며 오류는 수정했습니다 !

    • @goldmetal
      @goldmetal  5 лет назад +10

      타일맵의 미세한 경계에 걸려서 정지하는 것으로 확인되었습니다. 캡슐콜라이더는 모서리가가 둥그니까 걸리지 않구요.

    • @김성인-k4p
      @김성인-k4p 3 года назад +2

      감사합니다 저도 가다가 자꾸 멈춰서 어떻게해야하나 싶었는데

    • @digitoy8042
      @digitoy8042 2 года назад

      와...설마했는데 진짜 캡슐과 박스의 차이였군요 ㅎ 캐릭터가 걷다가 갑자기 멈춰버려서 계속 당황하고 있었는데 감사합니당~

  • @blue-bird-7772
    @blue-bird-7772 2 года назад +2

    34:28 if (!Input.GetButton("Horizontal"))하셔도 돼요

  • @elymion2020
    @elymion2020 5 лет назад +3

    키를 떼었을때 속도를 줄이기 위해 normalized를 쓰니까 1아니면 -1로 맞춰서 그런지 감속이 너무 어색해서 그냥 제거하고 rigid.velocity.x*0.2f로 해주니 괜찮게 되는 것 같아요

    • @goldmetal
      @goldmetal  5 лет назад +2

      미끄러지는 거리보다 부드러움을 원하시면 그 쪽이 훨씬 좋지요.

  • @wlcudy
    @wlcudy Год назад +1

    안녕하세요. 유익한 강의 잘 봤습니다! 쉽게 알려주신 덕분에 차근차근 잘 따라하고 있어요!!! 그저 갓..
    한가지 작은 궁금증이 있는데, 소수점을 표기할 때 f를 붙여야 한다고 해주셨고, 실제로 이전까지는 f를 붙여야 오류가 안났습니다.
    그런데 36:31 에서 if (Mathf.Abs (rigid.velocity.x) < 0.3) 에는 f가 없더라구요.
    마우스를 갖다대보니 float형태가 아닌 double 형태로 들어가 있고, 오류도 안 뜨고 출력도 잘 되긴 합니다.
    문제는 없어 보이지만 f를 쓰시지 않은 이유와, 저 형태에서는 소수점이 들어가도 오류가 뜨지 않는 이유가 궁금합니다.!

    • @wlcudy
      @wlcudy Год назад +1

      앗.. 댓글 달고 다시 플레이하며 생각해봤는데 정지하기까지 x값의 소수점이 0.xxxxx...로 많이 늘어나서 float로는 담기 어려워서 double로 기입하는 걸까요?!

    • @goldmetal
      @goldmetal  Год назад

      아뇨 단순히 제가 실수로 f를 기입하지 않는 것 같습니다.
      유니티에서 사용하는 대부분의 수는 float 형태이므로 왠만하면 f를 붙여서 float 형태를 사용하시길 바랍니다.

    • @goldmetal
      @goldmetal  Год назад

      깊은 분석하시는 태도는 정말 좋았습니다. 앞으로도 그렇게 하신다면 분명 좋은 개발자가 되실거에요! 🤭

  • @damo07
    @damo07 4 года назад +4

    20:39 이렇게 프리즈 하니까 아예 캐릭터가 움직이지를 못하네요..아 밑에 댓글을 보니 콜라이더를 캡슐로 바꾸면 되겠네요!

  • @Barang2
    @Barang2 Год назад +1

    제가 만든 캐릭터가 좌우로 움직일때, 저는 경이로움을 느꼈습니다

  • @허윤지-n8p
    @허윤지-n8p 3 года назад +3

    안녕하세요! 영상 잘 보고 있습니다! 제가 그림을 왼쪽을 보고 있는걸 그려서 그런지 플립을 하니까 오른쪽 화살표를 누르면 왼쪽을 보고 왼쪽 화살표를 누르면 오른쪽을 보내요.. 어떻게 하면 반대로 할 수 있나요?
    엇 Input.GetAxisRaw("Horizontal") == 1로 바꾸면 해결되네요! 아무거나 넣어본건데ㅎㅎ

  • @junecoji
    @junecoji 4 года назад +2

    ㅎㅎ 유익한 강의 감사합니다! 학원에서 느끼던 답답함과 의문점이 골드메탈님에 의해서 해소가 다 되네요..ㅠ
    그리고 유니티 19년도 4.4f1 버전을 사용 중인데 다른 건 다따라왔는데 마지막 애니메이션 이동 설정 할 때 저는 파란 색 겹치는 구간을 줄여도 없어지지 않더라구요ㅠ
    그래서 그냥 임의로 겹치는 두 구간 바를 최대한 조정해서 줄였더니 조금은 더 자연스럽게 연결이 되는 것 같아요.
    그리고 가만히 서있을때랑, 움직일때 모션이 둘다 서있을때 모션만 재생이 되길래 한 참 문제점을 파악하다가..
    비쥬얼 스크립트 isWalking에 오타가 있어서 연결이 안되더군요..하ㅠ 그래도 끝끝내 다 따라하고 마쳤습니다 ㅎㅎ 감사합니다 :)

  • @박지수-y9s4r
    @박지수-y9s4r 4 года назад +3

    2:24 첫번째로 쓰는 문장 Rigidbody2D가 색상이 연두색으로 안바뀝니다 으뜩하죠ㅠㅠ
    그것 뿐만이 아니라 대부분의 단어 색깔이 골드메탈님처럼 안변하네요ㅠㅠ 물론 실행도 안되고요.

    • @goldmetal
      @goldmetal  4 года назад +4

      일단 비주얼 스튜디오를 종료하시고,
      유니티 내부에서 스크립트 파일을 더블클릭으로 실행해보세요.
      그래도 안된다면 상위 메뉴 Edit > Preference > External Editor 가셔서
      비주얼 스튜디오가 연결되어 있는지 확인해서 안되어있으면 연결해주시면 됩니다.

  • @postgres2981
    @postgres2981 5 лет назад +1

    안녕하세요. 영상 정말 잘 보고 있습니다. 이런 영상 올려주셔서 감사합니다.
    다름이 아니라 최대한 질문 안드리고 댓글에 같은 질문이나 검색으로 해결해보려 했으나, 해결이 안돼서 질문 하나만 드리려합니다..
    19:44초에 캐릭터를 위로 띄울 때 내려가는 속도가 저는 2배종도 더 느린데 이유를 알 수 있을까요?
    보여지는 리지드바디의 설정과 코드는 똑같이하였는데 이상하게 나머지는 다 잘 되는데 이렇게 위로 떨어질 때는 현저히 느립니다..
    설마 모니터가 144hz라서 그거에 영향 받거나 그런건 아니겠죠..?
    그리고 그래비티 스케일을 2.5로 늘리는 방법으로 당장은 해결하였는데 원인이 너무 궁금합니다 ㅠ

    • @goldmetal
      @goldmetal  5 лет назад +2

      리지드바디의 Drag(저항력)이 너무 높아서 그렇습니다.
      Gravity Scale (중력 가중치)를 더 크게 잡으시거나 저항력을 낮추어보세요

    • @postgres2981
      @postgres2981 5 лет назад +1

      @@goldmetal 네네 그래서 그래비티 스케일 조정으로 일단 해결을 했는데 영상이랑 차이가 생기면 왠지 찝찝한 느낌이 들어서 ㅠㅠ..
      그래서 혹시 왜 같은 설정에도 이런 차이가 나는지 이유를 좀 알 수 있을까 해서 물어봤습니다..!

    • @goldmetal
      @goldmetal  5 лет назад +2

      @@postgres2981 제가 라이브로 진행하면서 수시로 바꿀 수도 있었을겁니다. 편집 과정에서 그 부분이 삭제되었기 때문에 다를 수 있으니 참고 바랍니다.

    • @postgres2981
      @postgres2981 5 лет назад

      @@goldmetal 그럴 수 있겠네요 답변 감사드립니다 ㅎㅎ..

  • @고라니
    @고라니 4 года назад +3

    4:14 근데 잘만 배우기가 어렵다는게 단점...

  • @eloe2003
    @eloe2003 4 года назад +1

    책갈피 20:00
    .. Update부분이 제대로 돌아가질 않아서 1시간동안 찾아보면서 낑낑댔는데...
    FixedUpdate부분에 오타가 있었네요.. 역시 컴퓨터는 틀리지 않는군요..

  • @AppleWind
    @AppleWind Год назад +2

    그저 신..

  • @진영-l4z
    @진영-l4z 4 года назад +1

    개인적인 의견) Player의 Linear Drag를 1로 설정하고 Platform(마찰력)의 계수를 0.1로 맞추면 키에서 손을때면 보다 자연스럽게 PlayerWalk 애니메이션에서 PlayerIdle 애니메이션으로 넘어가집니다.
    (할 사람은 하시구...음..)

  • @트랩충
    @트랩충 5 лет назад +1

    제가 캐릭터까지 다 만들고 이 영상 보고 따라 했는데 스크립트에서 뭔가 잘못됬는지 모르겠는데 계속 에러떠서 때려치우고 누워서 폰보는데 아직은 포기하기 싫어서 영상 다시보고 한글자 한글자 자세히 보면서 따라 썼더니 됬어요! 저는 제꺼가 이상해서 안되는줄 알았는데! 감사합니다! 어제 이거보고 밤새 따라만들었는데 아주 잘 움직여요! 이렇게 어려운 코딩(?)을 간단하게 설명해 주셔서 진심으로 감사합니다! 아직 실력이 모자라서 원하는건 못만들지만 차근차근 배워서 잘 만들어볼게요! 감사합니다!

  • @형-w4g
    @형-w4g 2 года назад +2

    선생님 감사합니다 덕분에 여러가지 배우네요 ㅎ

  • @kisRa-hq3jw
    @kisRa-hq3jw 5 дней назад

    unity6 오면서 rigid.velocity.x가 rigid.linearVelocityX로 변경되었네요
    레딧 보니까 명칭만 변경 된거고 사소한 변경점은 당장 신경 쓸 필요는 없다고 하니 unity6를 쓰면 저걸로 바꿔주면 될거 같아요

  • @saenggalchi__5019
    @saenggalchi__5019 Год назад +1

    물어보고 싶은게 두가지인데 1. 12:15 에서 나왔던 Freeze Rotation Z축 체크되어 있으면 캐릭터가 안움직이고 (왜인지 모르겠지만 ; 해결 완료)
    2. 캐릭터가 움직이면서 자꾸 어디에 걸리는 느낌이 들어요
    혹시 왜이러는지 이유를 알 수 있을까요??

    • @goldmetal
      @goldmetal  Год назад

      플레이어 콜라이더를 캡슐 콜라이더2D로 바꾸어주시고 구르지 않도록 리지드바디2D에서 마지막 옵션인 Freeze Rotation Z 체크해주세요.

  • @hajungmeuong
    @hajungmeuong 11 месяцев назад +1

    2:25 에서 RIgidbody2d가 자동완성과 색변경이 되지않습니다 올려주신 비쥬얼 스크립틀 연결방법을 써봐도 그대로입니다 근데 3d에서 아무거나에 RIgidbody넣고 해보면 완성됩니다.왜 rigidbody2d만 안될까요?

    • @goldmetal
      @goldmetal  11 месяцев назад

      대소문자 철저하게 가리기 때문에 대소문자 달라서 안되는 것 같은 느낌이드네요.
      일단 유니티와 비주얼 스튜디오를 연결하셔야 하니
      유니티 디버그 D01 영상을 참고해주세요.
      ruclips.net/video/-j5LKpFj4NQ/видео.htmlsi=YvuQUWe1k5_GmwH6

  • @asdfckim
    @asdfckim 4 года назад +1

    7:58초랑 똑같이 적었는데 Assets/NewFolder/playermove.es(21,19)errorcs1061:'Rigidbody2D'does not contain a definition for 'Velocity' and no accessible extension method 'Velocity' accepting a first argument of type 'Rigidbody2D라고 뜨는데 파파고로 번역해도 뭔지 모르겠고 뭐가 문제인지 알려주실수 있나요??

    • @goldmetal
      @goldmetal  4 года назад

      앞에 대문자가 아닌 소문자입니다. velocity
      프로그래밍은 대소문자에 민감하니 잘 확인해주세요.

    • @asdfckim
      @asdfckim 4 года назад

      @@goldmetal 감사합니다!

  • @pumdu
    @pumdu 4 года назад +1

    꼼꼼하게 설명해주셔서 진짜 도움 많이 되네요

  • @정-z7k
    @정-z7k 4 года назад

    감사합니다. 저는 vr쪽 신입인데 유니티 기초 배울려고 이것 듣고 있어요.

  • @상현조-g2w
    @상현조-g2w Год назад +1

    추가 질문 있습니다..!
    강의 25:03에서 캐릭터 애니메이션의 방향을 변환하기 위해 Flip 옵션을 스크립트로 작성해주는 부분에서 왜 spriteRenderer.flipX = Input.GetAxisRaw("Horizontal") == -1; 라고 작성하셨는지 궁금합니다.
    정확히는 -1과 비교해주신 이유가 궁금합니다.

    • @상현조-g2w
      @상현조-g2w Год назад +1

      flipX는 bool 자료형이라고 해주셨는데,
      spriteRenderer.flipX =
      Input.GetAxisRaw("Horizontal") == -1로 구분해서 생각하고, 연산식이 Horizontal키인
      a키를 눌렀을 때와 d키를 눌렀을 때 true와 false로 인식이 되는건가요?
      그리고 C#에서도 true를 1로, false는 그 외 나머지 수(보통 0)로 취급이 되는 것인지 궁금합니다.
      그렇다면 오른쪽인 d키를 눌렀을 때 [방향 전환인 flip이 true가 되면 전환되므로]
      Input.GetAxisRaw("Horizontal") == -1는 false (: .flipX = false가 되어 방향전환x)
      왼쪽인 a키를 누르면
      Input.GetAxisRaw("Horizontal") == -1 true라는 것인데
      결과적으로 d키는 ...
      아..! 작성하다보니 깨닫게 된 것 같은데, .GetAxisRaw이므로 -1(왼쪽) 0(가만히) 1(오른쪽)으로만 반환하는 특성을 이용하신 것 같은데 맞을까요?

    • @goldmetal
      @goldmetal  Год назад

      맞습니다. 수식에 대한 결과를 바로 대입하여 넣는 방식이니 잘 이해하셨으니 앞으로 코딩에 도움이 되셨으면 좋겠어요.

    • @ayi-te4sd
      @ayi-te4sd Год назад +1

      @@상현조-g2w 실제 로그 찍어보시면 A키를 눌렀을때 값이 -1 D키를 눌렀을때 값이 1로 나와요.
      그래서 위에 조건문에 그 값이 -1과 같으면 왼쪽이라고 판단하도록 작성 하신거 같아요

  • @모딕-c5b
    @모딕-c5b 2 года назад +1

    골드메탈님, 항상 잘 보고 있습니다! 진짜 예비 개발자들이 꼭봐야 할 영상입니다 ㅎ
    혹시 질문이 있는데 드려도 괜찮을까요?
    2:39초에 나온 플레이어 스크립트를 그대로 했는데 원처럼 돌면서 이동합니다 스크립트는 문제가 없는 것 같은데 왜 일까요 ㅠ

    • @모딕-c5b
      @모딕-c5b 2 года назад +1

      해결했습니다! 골드메탈님 영상 보다보니 프리즈 로테이션을 걸어야 한다는 사실을 깨달았어요 ㅎ 항상 좋은 영상 만들어 주셔서 감사합니다!

    • @Evgen2233
      @Evgen2233 Год назад

      @@모딕-c5b 형님 프리즈 로테이션 거는법을 알려주십쇼

    • @모딕-c5b
      @모딕-c5b Год назад

      @@Evgen2233 플레이어 오브젝트의 리지드바디 컴포넌트를 확인해보면, 프리즈 로테이션 z가 보일거예요. 그거 체크 하면 됩니당.

  • @to_day09
    @to_day09 4 года назад +1

    20:56 여기까지 했는데 갑자기 캐릭터가 키를 눌러도 안움직이는데 왜이러나요?
    (참고로 스크립트는 정상입니다)
    +24:26 에서도 게임을 실행하려니
    Assets\��ũ��Ʈ\NewBehaviourScript.cs(31,13): error CS0120: An object reference is required for the non-static field, method, or property 'SpriteRenderer.flipX'
    (수정본 입니다 문구를 햇갈렸네요ㅠ
    라는 문구가 뜨면서 게임 실행이 안돼는데 왜죠?

    • @goldmetal
      @goldmetal  4 года назад +1

      스크립트 중에 컴파일 에러가 있어서 그렇습니다.
      콘솔창 (Ctrl + 3)에서 에러 메세지를 더블클릭하면 에러 위치로 이동하니
      문제가 되는 부분을 수정해주시면 되겠습니다.

  • @managerdo7437
    @managerdo7437 5 лет назад +2

    금철형님 매번 감사합니다!!!
    개인적인 인생목표가 모바일 카드게임 출시인데
    2d부터 따라하면서 좀 배끼고 배우고 하겠습니당!

  • @ew31u2i38
    @ew31u2i38 5 лет назад +1

    RightArrow 누르는 도중 LeftArrow를 누르고있고 RightArrow를 떼는 경우 좌방향으로 flip이 일어나지 않습니다
    따라서
    if (Input.GetButton("Horizontal") && Input.GetAxisRaw("Horizontal") < 0)
    {
    if(rigid.velocity.x 0)
    {
    if(rigid.velocity.x >= 0)
    spriteRenderer.flipX = false;
    }
    }
    이와 같이 GetButtonDown이 아닌 GetButton을 이용하지만 속력이 방향과 일치할때 flip을 건드려 주는게
    더욱 부드러운 조작감을 준다고 생각합니다~~^^

    • @안동휘-j3u
      @안동휘-j3u 2 года назад

      조작감 관련해서 찾고있었는데 감사합니다. 혹시 if(rigid.velocity.x >= 0) 이부분 필요한 이유가 뭔지 알 수 있을까요?

  • @mkej5552
    @mkej5552 Год назад +2

    혹시 Box Collider 대신 Circle Colider를 사용하는 이유가 있나요? 해보니 Box는 중간에 땅에 걸리는건지 이동중 멈추는 현상이 있긴 하더군요..! 궁금해서 여쭤봅니다🙂

    • @goldmetal
      @goldmetal  Год назад

      네 맞습니다. 걸리는 이유로 바꾸는 것이구요.
      박스형은 점프 착지에도 난간에 걸리는 부분이 칼같아서 플레이어가 불편한 경험을 받을 수 있습니다. 모서리가 둥근 콜라이더면 좀 더 느슨하게 닿아서 컨트롤로 극복할 수 있는 경험도 받을 수 있기에 추천하는 모양입니다.
      (캡슐 콜라이더가 존재하는 이유)

  • @이민재-w9l
    @이민재-w9l 2 года назад +1

    28:36초에서 Has Exit time 밑의 타임라인을 닫으시는데 이게 안닫힙니다. 이 문제는 어떻게 해결해야 하나요? 그리고 키보드 누르면 걷는 모양으로 바뀌면서 이동을 잘하는데 키보드에서 손을 떼도 계속 걷는 모양이 유지됩니다. 그러다가 깃발에 닿으면 그 때 idle로 모양이 바뀝니다. 확인해보니 애니메이터에서 Walk에서 Idle로 바뀌지 않습니다. 며칠을 고생하고 있습니다.ㅠ.ㅠ

    • @goldmetal
      @goldmetal  2 года назад

      Settings 옆 화살표는 누르시면 됩니다. 그리고 36:14 처럼 isWalking을 false로 되돌리는 코드 잘 확인해보세요.

    • @이민재-w9l
      @이민재-w9l 2 года назад +1

      @@goldmetal 바쁘신데 오래된 영상에 답글 달아주셔서 진심으로 감사드립니다. 28:17초의 settings 아래에 있든 타임라인이 골드메탈님처럼 닫히지가 않아서 영상의 댓글을 보니 Transition Duration을 0으로 해도 된다하여 0으로 바꿨습니다. 꼭 골드메탈님 처럼 닫혀야지 정상인건가요?
      그리고 답글 주신 코드는 계속 검수해보았지만 이상이 없었습니다. 28:17초의 타임라인을 닫지 않고 진행해서 그런건지 키보드를 눌러 이동할 때는 walk모양으로 잘 걷는데 키보드에서 손을 뗄 때면 골드메탈님이 하신것처럼 서있는 모양이 나와야 하는데 계속 걷는 모양이 유지됩니다.
      정말 번거롭게 해드려서 죄송합니다. 며칠째 동영상을 반복해도 문제가 해결되지 않아서 염치불구 장문의 질의 남깁니다. 감사합니다.

    • @goldmetal
      @goldmetal  2 года назад

      @@이민재-w9l 꼭 0으로 하실 필요는 없습니다. 대충 0.1로 하셔되 되니 참고하시고 다음 문제는 제가 전에도 말씀드렸지만 Transition의 Condition을 다시 확인하시길 바랍니다.

  • @Vmann777
    @Vmann777 2 года назад

    뭐지 24:50 코드 완벽하게 따라 적었는데 Input Axis Horiznotal is not setup.
    To change the input settings use: Edit->Settings->Input 이라고 뜨면서 좌우 반전이 안됩니다. 이동할때마다 문자가 300개씩 날라오네요..

    • @goldmetal
      @goldmetal  2 года назад

      오타의 문제입니다. Horiznotal -> Horizontal

  • @너구리-p2b
    @너구리-p2b 5 лет назад +2

    영상진짜 잘봤습니다!! 궁금한게 있는데 처음에나오는 이동 부분 코드를 설명없이 바로 만드시더라구용 그래서 궁금해서 댓글달았습니당
    다른 부분은 이해가 되는데 제가 아직 용어들을 거의 모르는 상태라 이해가 더딘거 같습니다
    rigid.AddForce(Vector2.right*h.ForceMode2D.Impulse);
    이부분 설명 좀 부탁드립니다 ㅜㅜ

    • @goldmetal
      @goldmetal  5 лет назад +2

      Vector2.right * h 방향으로 힘을 가한다는 내용입니다.
      여기서 Vector2.right 는 (1, 0) 과 동일하고, 여기에 h 만큼 곱하여 크기가 정해집니다.
      (h 가 10이면 (10, 0)이 되어 오른족으로 더 큰 힘이 가해짐.)
      ForceMode2D는 힘이 가해지는 방법입니다.
      이것은 B10 추가 정보에서 다루었습니다.
      blog.naver.com/gold_metal/221486016593

  • @신현수-j9i4t
    @신현수-j9i4t 11 месяцев назад +1

    골드메탈님 영상잘보고있습니다!!
    캐릭터가 넘어지는건 어떻게 해야하나요??

    • @goldmetal
      @goldmetal  11 месяцев назад +1

      플레이어 리지드바디에서 마지막 옵션인 Freeze Rotation Z 체크하시면 됩니다!

  • @정기찬-l6j
    @정기찬-l6j 5 лет назад +1

    정말.. 골드메탈님 보면서 알게된게 엄청 많아요! 너무 감사합니다👍👍

  • @NaDaSip_Ing
    @NaDaSip_Ing 4 года назад +1

    골드메탈님 제가 지금 동아리에서 만들어야하는 게임종류가 2D라서 지금 골드메탈님 2D강의영상을 보고 있는데 나중에 가면 코딩할때 Rigidbody나 velocity등등 기능을 가진 단어들이 많이 있잖아요 근데 뒤에 영상을 보다보면 전에 코딩했던 코드에서 나중에 확인 할때 이게 무슨 기능을 했는지 가끔 까먹어서 다시 영상을 보러 오는데 혹시 2D관련 코딩 단어에 대해서 정리해주실 수 있으신가요? 그렇다고 해서 이건 어디까지나 저의 편리를 위한 핑계일 뿐이라 안 해주셔도 되요!^^

    • @goldmetal
      @goldmetal  4 года назад +1

      2D에 관련된 컴포넌트와 프로퍼티도 갯수가 많기 때문에 다 정리해드리기는 어렵습니다.
      모르실 때는 그때그때 구글 검색 하셔서 익히시는 걸 추천드려요.
      참고로 내년에 컴포넌트들를 하나씩 정리하는 강좌를 해볼까 생각 중입니다.

    • @NaDaSip_Ing
      @NaDaSip_Ing 4 года назад +1

      @@goldmetal 오 답글을 해주시다니 정말 감사합니다 골드메탈님 영상은 교육용 강의이면서 동시에 골메님의 매력적인 말투로 친숙하게 다가갈수 있는 것 같아서 너무 좋아요

  • @haru_jang
    @haru_jang 5 месяцев назад +1

    거시기 두목님 8:22 맥스스피드를 스크립트에서 영어로말고 한글로 쓰면 오류 잘나나여?????

    • @goldmetal
      @goldmetal  5 месяцев назад

      한글 변수명, 함수명 충분히 가능합니다. 오류의 가능성은 없다라고 말씀드리기가 어렵네요.
      일반적인 경우는 문제 없을거에요

  • @JaeRo1339
    @JaeRo1339 Год назад +1

    최근에 2회독을 시작해서 처음부터 보고있습니다!
    다만 궁금한게 하나 생겼는데, flix관련 질문입니다!
    flipx로직을 update에서 fixedupdate로 옮겨주니 더 원활하게 잘 방향전환이 됩니다!
    update에서는 60프레임 고정으로 인해 가끔 잘못된 타이밍에 키 입력을 하면 키가 씹히는 문제가 발생하는것 같아 fixedupdate로 옮겨주었습니다!
    문제자체는 해결이 되었는데, 디버깅을 해보면 약간의 메모리를 더 사용하게 되는데, 이 문제가 후에 게임을 완성함에 있어서 큰 문제점으로 다가올 여지가 있을까요?

    • @goldmetal
      @goldmetal  Год назад +1

      그정도의 메모리 차지는 신경쓰시지 않으셔도 됩니다.

  • @sapzilwang
    @sapzilwang 2 года назад

    안녕하세요. 강의 정말 감사합니다.
    강의를 보면서 따라하고 있는데요
    따라만 하면 되긴하는데 코드를 작성하실때 왜 이렇게 코딩했는지가 궁금합니다.
    C# 에 대한 이해도가 부족해서 그런데요 혹시 코드에 대한 기초는 어떻게 공부하는게 좋을까요?

    • @goldmetal
      @goldmetal  2 года назад

      C#으로 유튜브 검색하셔도 되고 제 채널의 B4영상을 보셔도 됩니다.
      ruclips.net/video/j6XLEqgq-dE/видео.html

  • @yuri0999
    @yuri0999 4 года назад +2

    선생님 어느쪽으로 절할까요 유니티과제 너무 막막했는데 정말 감사드려요 ㅜㅜ

  • @아티바보
    @아티바보 2 года назад

    안녕하세요!
    18:49부분까지 코드를 똑같이 다 짠것같은데 키를 놓으면 딱 멈추질 않아요.
    코드는
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public class playerMove : MonoBehaviour
    {
    public float maxSpeed;
    Rigidbody2D rigid;
    void Awake()
    {
    rigid = GetComponent();
    }
    void Update()
    {
    if (Input.GetButtonUp("Horizontal"))
    {
    rigid.velocity = new Vector2(rigid.velocity.normalized.x * 0.5f, rigid.velocity.y);
    }
    }
    void FixedUpdate()
    {
    float h = Input.GetAxis("Horizontal");
    rigid.AddForce(Vector2.right * h, ForceMode2D.Impulse);
    if (rigid.velocity.x > maxSpeed)//오른쪽 최대 속도
    {
    rigid.velocity = new Vector2(maxSpeed, rigid.velocity.y);
    }
    else if (rigid.velocity.x < maxSpeed * (-1))//왼쪽 최대 속도
    {
    rigid.velocity = new Vector2(maxSpeed * (-1), rigid.velocity.y);
    }
    }
    }

    • @goldmetal
      @goldmetal  2 года назад +1

      GetAxis 가 아닌 GetAxisRaw로 하면 원하시는 모양이 나올거에요

    • @아티바보
      @아티바보 2 года назад +1

      @@goldmetal 아! 감사합니다!!

  • @새별-y1m
    @새별-y1m 3 года назад +1

    36:00 Matf 나 여러 클래스들에 색깔이 안바뀌고 .눌렀을 때 수학관련 함수가 안나와요.. 직접 타이핑하면 되긴하는데.. 색깔 바뀌게하려면 어떤 설정을 바꿔야할까요?

    • @goldmetal
      @goldmetal  3 года назад

      유니티 디버그 D01 영상에서 다루었습니다.
      ruclips.net/video/-j5LKpFj4NQ/видео.html

    • @새별-y1m
      @새별-y1m 3 года назад

      @@goldmetal 와! 빠른 답장 감사합니다ㅠㅠ

  • @황두현-s8b
    @황두현-s8b 4 года назад

    normalized 키워드는 벡터를 단위벡터... 그러니까 크기가 1이고 방향만 같은 벡터로 변환시켜준다는 건데, 36:42 처럼 단위벡터가 0.3보다 작을 때...? 오른쪽으로 이동만 하고있으면 크기가 1이고 방향은 오른쪽일 단위벡터가 어떻게 저렇게 잘 작용하는 건가요? 저는 저런 결과가 나오지 않아서
    rigid.velocity.x * rigid.velocity.normalized.x < 1 처럼 방향벡터 * 벡터
    로 구해야 비로소 결과가 따라줬습니다.

    • @goldmetal
      @goldmetal  4 года назад

      말씀하신 if문 조건 Math.abs(rigid.velocity.x) < 0.3 에서 rigid.velocity.x는 단위벡터가 아닙니다. 위에서 Stop 할 때 단위벡터를 사용했는데 이것은 GetButtonUp,
      즉 버튼에서 손을 뗏을 프레임에만 실행이 되고 단위벡터 자체가 되는게 아닌 값만 velocity에 적용하는거랍니다. 이후 속도는 계속 줄어들다가 0.3 미만이 되면 애니메이션도 멈추는걸로 바꾸는 것이지요.

    • @황두현-s8b
      @황두현-s8b 4 года назад

      @@goldmetal 아앗... 처음에 단위벡터 쓰신 거 보고 맘대로 바꿔보다가 헷갈려버린 듯 합니다. 감사해요!

  • @박성환-x8m
    @박성환-x8m 4 года назад +2

    골드메탈 님 ㅠㅠ 진짜 강의 지금까지 잘 따라하고 있는데, 정말 이정도 퀄리티면 강의 컨텐츠를 판매하셔도 괜찮을 것 같습니다. 인프런 같은 사이트보면 그렇게들 강의 제공 많이 하더라구요 ㅎㅎ 만약 강의 판매하신다면 바로 구매할 의향 있습니다!!

    • @goldmetal
      @goldmetal  4 года назад +3

      유료 강좌는 아직 생각하고 있지 않습니다.
      일단 유튜브에 집중하고 나중에 생각하려구요. 여튼 감사합니다. 😃

  • @junwonlee6693
    @junwonlee6693 4 года назад +2

    쉽고 재밌는 강의 정말로 감사합니다.
    현재 14분 정도까지 본 상태인데, 캐릭터의 속도가 골드메탈님의 것과 비교해서 너무 현저히 느립니다. 그리고 분명 friction 그리고 linear drag 도 0으로 세팅되어 있는데 방향키에서 손을 땐 순간 캐릭터가 곧바로 멈추네요. 오히려 몬스터를 캐릭터로 쳐보면 몬스터는 미끄러지듯 밀려나는데, 왜 제 "캐릭터"만 이렇게 바로 멈추는지 궁금합니다.
    Capsule collider 랑 복합 콜라이더 전부 다 세팅 해보았는데 고쳐지질 않네요... ㅠㅠ 무엇이 문제일지 알려주시면 무척 감사하겠습니다...!

    • @goldmetal
      @goldmetal  4 года назад

      이동 로직 중에서 Axis 값이0 일 때 그대로 속도에 적용되는 것 같네요.
      Addforce 함수를 사용하고 계신게 아니라면 이동로직을 한번 살펴보시는게 좋겠습니다.

  • @Ssabsonhe
    @Ssabsonhe 3 года назад

    선생님 최고

  • @Insamgum
    @Insamgum 3 года назад

    안녕하세요 골드메탈님 항상 좋은 강의 올려주시는 거 너무 잘 듣고 있습니다
    다름이 아니라 인스펙터 창에서 애니메이션을 설정하고 플레이 화면에서 실행시킬 경우, Walk 상태에서 idel 상태로 바로 넘어가야 되는데
    항상 Walk 상태를 2~3초 정도 더 실행하고 idel 상태로 넘어오네요
    강의에 있는 내용은 전부 적용한 상태고, 유일하게 버전(유니티 2020.3.22f, 비주얼 스튜디오 2019)이 달라서
    (28:06)Transitions -> Settings 창에 나오는 타임라인 부분만 명확하게 적용시키지 않았습니다.
    그렇기 때문에 이 부분에서 문제가 있는 거 같은데, 인터넷을 찾아봐도 골드메탈님 강의에 최적화된 답이 없는 것 같아 직접 자문을 구하고자 합니다
    짧게라도 답변해주신다면 정말 감사드릴 거 같습니다!

    • @goldmetal
      @goldmetal  3 года назад

      Walk 상태에서 Idle 상태로 가는 화살표 선택하시고
      has Exit Time 체크 해제하시면 됩니다.

    • @Insamgum
      @Insamgum 3 года назад

      @@goldmetal 답변 감사합니다! 바로 적용시켜보겠습니다 ㅎㅎ

  • @Iligwanji
    @Iligwanji 4 года назад

    메탈님 항상 좋은 강의 감사합니다. 혹시 앵그리버드 같이 새총에 타서 날라가는 모션 같은 거도 강의 있을까요? 날라가면서 공튀기기 마냥 벽에 부딪히는(부딪혀도 감속 없이) 것도 재현해보고 싶습니다.

    • @goldmetal
      @goldmetal  4 года назад

      간단하게 리지드바디를 통한 물리효과로 구현하시면 됩니다.
      장애물의 리지드바디 Mass(질량)을 작게하고
      투사체의 Mass를 크게 늘려주면 원하시는 모양이 나온답니다.

  • @bg.2790
    @bg.2790 4 года назад +1

    방향전환에서도 아이템을 먹고 어지러움을 유발시키는 효과가 있으면 방향이 반대로 되게 할 수도 있겠네요.

    • @goldmetal
      @goldmetal  4 года назад +2

      네 물론입니다. 이런 응용 좋아요 🤗

  • @gim-ori
    @gim-ori 2 года назад +1

    흠 버전이 달라서 그런가 똑같이 따라한다고 했는데도 결과가 좀 달라서 기분이 쵸큼 그렇군요 -_-; 그래도 무작정 따라해보겠읍니다 이번에도 잘봤습니당

  • @눕잼이
    @눕잼이 4 года назад

    골드메탈님 질문인데 2:40초랑 똑같이 입력을 하고 오류가 없습니다 그런데 플레이어를 어떡게 이동시키나요?

  • @상현조-g2w
    @상현조-g2w Год назад

    지금까지 골드메탈님께서 가르쳐주셨던 대로 그대로 따라했고, 아무 이상없이 진행해올 수 있었습니다.
    그런데 이번 강의에서 땅 타일을 좀 더 늘리고자 기존 타일을 복붙하여 늘렸고, 전체 바닥 타일을 포함한 아틀라스의 Pixel per Unit이 16으로 캐릭터 이미지와 동일한데도 복붙하여 생성한 바닥 및 캐릭터 오브젝트의 위치가 Position을 정수 1 단위로 증가/감소시켜주었을 때 정상적으로 빈틈없이 이어붙게 위치되지 않습니다.
    예를들어 바닥1 오브젝트의 Position이 (0, 0, 0)이라고 할 때 바닥2 오브젝트의 Position은 (1, 0, 0)으로 해주면 빈틈없이 자연스럽게 옆에 이어붙게 되는 것이 정상일텐데, 뜬금없이 바닥2 오브젝트가 이상한 위치에 나타납니다.
    Pixel per Unit만 동일하게 입력해주면 된다고 가르쳐주셨는데.. 무엇이 문제일까요?

    • @goldmetal
      @goldmetal  Год назад

      카메라에 픽셀퍼펙트 컴포넌트가 없어서일 수도 있고 둘이 물리적으로 충돌해서 멀어졌을 가능성도 있습니다. 리지드바디가 있으면 Static 타입으로 설전해주시고, 카메라에는 픽셀 퍼펙트 카메라 컴포넌트를 추가해주세요. 거기에 있는 레퍼런스 해상도는 자유롭게 조절하셔서 보이는 픽셀크기를 조절하시면 됩니다.

    • @상현조-g2w
      @상현조-g2w Год назад +1

      @@goldmetal 헉 이렇게 빨리 답변해주시다니..! 감사합니다!
      이번에 좋은 기회를 얻어서 골드메탈님 강의로 공부를 하고있는데 도움많이 받고있습니다. 정말 감사합니다!

  • @aengsyoutube
    @aengsyoutube 3 года назад

    골드메탈님! 개발의 ㄱ도 모르는 개린이(?)입니다. C언어도 제대로 모르는데 따로 문법 공부를 하고 이 강좌를 따라하는게 좋을까요 아니면 이 강좌를 따라하며 나오는 함수들을 암기하는게 나을까요?

    • @goldmetal
      @goldmetal  3 года назад

      기초부터 배우고 하시는 것이 여러모로 좋습니다.
      제 채널에서는 B04에서 다루었으니 한번 확인하시면 도움이 되실 수도 있습니다.
      ruclips.net/video/j6XLEqgq-dE/видео.html

    • @aengsyoutube
      @aengsyoutube 3 года назад

      @@goldmetal 정말 감사합니다! 열심히 공부하겠습니다

  • @유튜브코리아공식계정
    @유튜브코리아공식계정 28 дней назад +1

    2:56 인풋메니저에서 horizontal 설정 돼있는거 확인했고 코드도 똑같이 따라쳤는데 "input axis horizontal is not setup" 라고 오류뜨면서 안움직여요

    • @goldmetal
      @goldmetal  26 дней назад

      대소문자 정확해야 합니다. H 대문자가 맞는지 코드 확인해주세요

    • @유튜브코리아공식계정
      @유튜브코리아공식계정 26 дней назад +1

      @@goldmetal 감사합니다!!!

  • @다현-m8i
    @다현-m8i 6 месяцев назад +1

    2:35 코드도 그대로 치고 input manager에서 움직이는 키도 다 확인했는데 플레이어가 안 움직여요.. 어디 부분이 잘못되었는지를 잘 모르겠어서 댓글 남깁니다
    (gravity: 3, dead: 0.001, sensitivity: 3 이에요)

    • @goldmetal
      @goldmetal  6 месяцев назад

      AddForce에 두번째 ForceMode2D.Impulse가 들어갔는지 확인해주세요

  • @정재우-w3u
    @정재우-w3u 5 лет назад +2

    잘보고있습니다!!

  • @tvmingming
    @tvmingming 25 дней назад +1

    안녕하세요 질문드립니다.
    flip.x코드 쪽이 이상합니다. 똑같이한것 같은데 문워크를 해요
    using System.Collections.Generic;
    using UnityEngine;
    public class PlayerMove : MonoBehaviour
    {
    public float maxSpeed;
    Rigidbody2D rigid;
    SpriteRenderer spriteRenderer;
    void Awake()
    {
    rigid = GetComponent();
    spriteRenderer = GetComponent();
    }
    void Update()
    {
    //Stop Speed
    if (Input.GetButtonUp("horizontal"))
    {
    rigid.velocity = new Vector2(rigid.velocity.normalized.x * 0.5f, rigid.velocity.y);
    }
    //Direction Sprite
    if (Input.GetButton("Horizontal"))
    {
    spriteRenderer.flipX = Input.GetAxisRaw("Horizontal") == -1;
    }
    }
    void FixedUpdate()
    {
    //Move Speed
    float h = Input.GetAxisRaw("Horizontal");
    rigid.AddForce(Vector2.right * h, ForceMode2D.Impulse);
    //Max Speed
    if (rigid.velocity.x > maxSpeed) //Right Max speed
    rigid.velocity = new Vector2(maxSpeed, rigid.velocity.y);
    else if (rigid.velocity.x < maxSpeed*(-1)) //Left Max speed
    rigid.velocity = new Vector2(maxSpeed*(-1), rigid.velocity.y);
    }
    }

    • @goldmetal
      @goldmetal  25 дней назад

      Input.GetAxisRaw("Horizontal") < 0; 이렇게 부등호를 바꾸어보세요

  • @SHINJEONGMIN-b4p
    @SHINJEONGMIN-b4p 5 лет назад +1

    유니티 강의 정말 감사합니다!!
    강의 진행이 너무 자연스러워서 내용이 쏙쏙 들어오네요 ^^
    질문이 하나 있습니다만!
    Stop movement 란에서
    rigid.velocity = new Vector2(
    rigid.velocity.normalized.x * 0.5f, rigid.velocity.y);
    위 코드처럼 작성하셨는데, normalized값인 1 (혹은 -1) 에서 0.5를 곱한 값을 대입하여 속력이 확 줄어드는 것이라고 이해했는데요.
    같은 스크립트로 제가 실행했을 때는
    normalized된 속력 1에 0.5를 곱한 값을 지속해서 속력에 넣으니까
    버튼을 뗀 상태에서 속력만 크게 줄어들었을 뿐 계~속 움직여요...
    그렇다고 속력을 줄이도록 코드를 짜면 순식간에 멈춰버려서 골드메탈님처럼 관성이 작용하는 것 같은 느낌이 안사네요..ㅡㅡ
    어떻게 해야하나요??

    • @goldmetal
      @goldmetal  5 лет назад

      플레이어 리지드바디의 공기저항, Drag 값을 늘려주시면 스스로 멈추게 됩니다.

    • @SHINJEONGMIN-b4p
      @SHINJEONGMIN-b4p 5 лет назад

      @@goldmetal ㅠㅜ Linear Drag값을 높이면 속도가 줄어드는데 멈추진 않네요...

    • @goldmetal
      @goldmetal  5 лет назад

      @@SHINJEONGMIN-b4p 혹시 플랫폼 콜라이더의 Physics Material 2D 에서 Friction(마찰력)이 0인지 확인해보세요.

    • @SHINJEONGMIN-b4p
      @SHINJEONGMIN-b4p 5 лет назад

      @@goldmetal오오옷 감사합니다~
      해결됬어요!! 멈출 때 공기저항하고 마찰력 둘 다 고려해야하는 군요!!

  • @워킹조각맨
    @워킹조각맨 5 лет назад +2

    골든메탈님 잘 보고 있습니다!
    방향전환에서
    spriteRenderer.flipX = Input.GetAxisRaw("Horizontal") == -1;
    이 코드 의미가 Horizontal 값을 받았을때 -1인 경우 flipX에 -1 대입 이 의미인가요?

    • @goldmetal
      @goldmetal  5 лет назад +2

      flipX 는 bool 타입입니다. -1인 경우는 true가 되어 X축으로 뒤집어지는 것이지요

  • @sonyun1968
    @sonyun1968 5 месяцев назад +1

    20:50 안넘어지게 하기 Freeze Rotation Z축 체크

  • @와샌즈-v5s
    @와샌즈-v5s 2 года назад

    2:28 쯤에 나온 코딩을 그대로 따라하였지만 유니티에선 C#파일에 문제가 있는 것 같다고 합니다
    어떻게 하면 좋을까요
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public class move : MonoBehaviour
    {
    Rigidbody2D rigid;
    void Awake()
    {
    rigid = GetComponent();
    }
    void FixedUpdate()
    {
    float h = Input.GetAxisRaw("horizontal")
    rigid.AddForce(Vector2.right * h, ForceMode2D.Impulse);
    }
    }
    이렇게 썼는데 영상과 다른게 있을까요

    • @goldmetal
      @goldmetal  2 года назад

      float h = Input.GetAxisRaw("horizontal") 뒤에 세미콜론 ; 이 빠졌습니다.
      그리고 Horizontal 앞 H는 대문자입니다. 이것도 고쳐주세요

  • @아머르
    @아머르 3 года назад +2

    골드메탈님~ 좋은 강좌 감사합니다!
    전진 키를 누르면서 점프를 하면 점프 후 Animator에서 Jump - Walk로 애니메이션 전환이 바로 안되고 방향키를 한번 떼었다가 눌러야 적용이 됩니다.
    Parameters도 문제없고, Exit Time도 해제했고, Settings에서 겹치는 구간도 없앴고, C# 코드도 이상이 없는데 뭐가 문제일까요...?

    • @goldmetal
      @goldmetal  3 года назад

      Condition에서 isWalking = true, isJumping= true 되어야 합니다. 확인해보세요.
      ruclips.net/video/2SikOdH7xvQ/видео.html

  • @나비왕
    @나비왕 5 лет назад +2

    고맙읍니다 선생님...

  • @rut130
    @rut130 3 года назад +1

    초반 부터 막히네요.. 이 다음에 함수 같은거 할때 또 질문이 나오겠지만 초반에 똑같이 파일하고 c# scripts를 생성했는데
    Cant add script behaviour EnumerableTestMethodCommand. The script needs to derive from MonoBehaviours 라고 뜨네요...

    • @goldmetal
      @goldmetal  3 года назад

      클래스 이름 옆에 :MonoBehaviours 가 붙어야 합니다. 확인해보세요.

    • @rut130
      @rut130 3 года назад

      혹시 어디 클래스 말하는건가요...

    • @goldmetal
      @goldmetal  3 года назад

      @@rut130 작성하신 스크립트 여시고 괄호 열기 전 첫번째 public 줄입니다. 이걸 클래스 선언이라고 불러요

    • @rut130
      @rut130 3 года назад

      @@goldmetal using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;
      public class PlayerMove : MonoBehaviour
      {
      // Start is called before the first frame update
      void Start()
      {

      }
      // Update is called once per frame
      void Update()
      {

      }
      }
      골드메탈님꺼랑 대조해서 봤는데 다른게 없더라구요 이렇게 하는게 맞나요? 근데 이렇게 해도 안되네요

    • @goldmetal
      @goldmetal  3 года назад

      @@rut130 맞습니다. 혹시 글자색이 안바뀌면 유니티와 스크립트 에디터를 연결해보셔야 할 것 같습니다. 이건 유니티 디버그 D01에서 다루었으니 확인해보세요.
      ruclips.net/video/-j5LKpFj4NQ/видео.html

  • @윤정길-b6d
    @윤정길-b6d 4 года назад +1

    움직임 하나도 이렇게 많이 많이 신경을 써야하는건지 몰랐네요 점프도 또 얼마나 많은 부분을 신경써야하는지 기대됩니다~~~~~

  • @bingga5427
    @bingga5427 4 года назад +1

    2:48 캐릭터가 계속 넘어져요
    오류가 어디있는지 모르겠습니다 ㅠㅠ
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public class PlayerMove : MonoBehaviour
    {
    Rigidbody2D rigid;
    // Start is called before the first frame update
    void Awake()
    {
    rigid = GetComponent();
    }
    // Update is called once per frame
    void FixedUpdate()
    {
    float h = Input.GetAxisRaw("Horizontal");
    rigid.AddForce(Vector2.right * h, ForceMode2D.Impulse);
    }
    }

    • @goldmetal
      @goldmetal  4 года назад

      캐릭터 리지드바디의 마지막 옵션인 Freeze Rotation Z를 체크해주세요.

    • @bingga5427
      @bingga5427 4 года назад

      @@goldmetal 감사합니다

  • @빠이현-o9y
    @빠이현-o9y 4 года назад

    18:00
    rigid.velocity = new Vector2(((rigid.velocity.x < 0) ? -1 : 1) * 0.5f, rigid.velocity.y);
    이렇게 삼항연산자로도 할 수 있지만 삼항연산자는 연산속도가 느리다는 단점이 있는걸로 아는데
    normalized 와 삼항연산자 중에 뭐가더 빠른가요??

    • @goldmetal
      @goldmetal  4 года назад

      이항 연산자, 삼항 연산자는 속도 차이가 거의 없습니다.
      삼항 연산자가 느리다는건 처음 듣는군요.
      로직 결과가 동일 하다면 normalized 사용하셔도 무방합니다.

  • @쿡쿡이-q5h
    @쿡쿡이-q5h 4 года назад

    영상대로 따라했는데 오른쪽 키 누르니깐 움직이긴 움직이는데 정상적으로 옆으로 움직이는게아니라 막 돌면서 굴러가네요 이거 왜이런가요?? ㅠㅠ
    앗! freeze z rotation....이 있었네요 ㅠㅠ 매번 명강의 감사합니다!

  • @beatles62
    @beatles62 4 года назад +1

    24:14 처럼 if(Input.GetButtonDown("Horizontal"))
    spriteRenderer.flipX = Input.GetAxisRaw("Horizontal") == -1;
    이렇게 썼는데 오류네요...
    문제가 뭘까요?

    • @goldmetal
      @goldmetal  4 года назад

      spriteRenderer 가 Null일 수 있겠네요.
      에러메세지와 비교해보시고, 변수 초기화 하셨는지 확인해보세요.

  • @하지-f7e
    @하지-f7e 4 года назад

    오래된 영상이지만 속도를 제한하는 부분에서 velocity를 매 프레임마다 변경하는건 의도치 않은 물리 현상을 야기할 가능성이 매우 높습니다.
    해당 로직 수정해 주시면 좋을것 같습니다.

    • @goldmetal
      @goldmetal  4 года назад

      velocity를 직접 건들지 않는 것이 맞으나,
      자연적으로 물리 엔진에 의해 계산된 속도를 제어함으로서 비정상적인 물리 결과가
      나올 수 있는 정도의 리스크라서 유니티 엔진에 크게 해가되는 정도의 위험부담은 없습니다. 공식 문헌에도 "권장하지 않는다" 정도입니다.
      이런 방식으로 속도를 제어할 수 있다는 정도의 튜토리얼이라 생각해주시면 좋겠습니다.

    • @goldmetal
      @goldmetal  4 года назад

      @@한건희-k4w 트랜스폼 이동으로 구현하시면 조금 더 안전한 로직이 됩니다. 하지만 물리 충돌을 무시하는 경우가 있으니 트리거를 잘 활용하셔서 예외처리를 해주셔야 해요

  • @접-e6w
    @접-e6w 4 года назад +1

    골드메탈님! 제가 프로그래밍을 배워보고싶은데요... 유니티 기본 조작법이나 그런거는 거의 알고요(아마도)
    스크립트 쓰는걸 배워보고싶은데 저는 완전 쌩초보거든요 ;; 혹시 저같은 입문자한테 알맞은 방법 없을까요?
    이런 강좌도 이해가 잘 안돼요ㅠㅠ 어떻게 배우면 좋을까요?

    • @goldmetal
      @goldmetal  4 года назад

      B1 영상부터 차례대로 보시는 것을 추천드립니다.
      ruclips.net/video/lYzGTUJxPDQ/видео.html

  • @dongwoonkim5545
    @dongwoonkim5545 2 года назад

    안녕하세요 골든메탈님 강의 잘보고 게임 제작도 어느정도 진전이 생기게 되어 감사합니다
    다름아니라 애니메이션 질문이 하나있어 해봅니다
    구조도 어느정도 만들어서
    픽셀 형식으로 하다가 좀더 자세히 만들어보자 이미지를 그려서 스켈레톤 이식하고 2d ik 로 리깅해서 사용중인데 문제는
    애니메이션을 넣으면 오브젝트의 이동속도가 급감하고 거의 일정한 수준으로 처참하게 내려갑니다
    혹시 이현상이 addforce 와 관련이있는건가요?
    애니메이션을 이식안한채로 할때는 정상적인 속도를 가졌습니다
    만약 이현상이 나오면 addforce 를 포기하고 이동을 .Velocity로 해야 할까요?

    • @goldmetal
      @goldmetal  2 года назад

      혹시 애니메이션에 position도 변형하고 있나요?
      그렇다면 Animator에서 Apply Root Motion을 체크해주세요

  • @user-uz3gh6kc4u
    @user-uz3gh6kc4u 4 года назад +2

    float h = Input.GetAxis("Horizontal"); 로 하시면
    if (Input.GetButtonUp("Horizontal"))
    {
    Debug.Log("up");
    rigid.velocity = new Vector2(rigid.velocity.normalized.x*0.5f, rigid.velocity.y);
    }
    이것이 적용이 안됩니다
    float h = Input.GetAxisRaw("Horizontal"); 이걸로 하시길 바랍니다

  • @잡빌
    @잡빌 2 года назад

    선생님 영상 보고 배우는 중인데 8:00 때 if esle if문을 집어 넣으면 캐릭터가 속도의 제한이 생기는 게 아니라 아에 안 움직이던데 왜 그런 건가요? 단순 오류인 걸까요?

    • @잡빌
      @잡빌 Год назад +1

      아 그냥 단순 오류였네

    • @goldmetal
      @goldmetal  Год назад

      찾으셔서 다행입니다

  • @conm8119
    @conm8119 3 года назад

    20:42 이부분까지 왔는데요, 플래이어를 한방향으로 계속 움직이다보면 중간에 건린듯이 velocity값이 0이 되서 멈추고 반대방향으로 약간 움직여야지 다시 앞으로 갈 수있게되는데 이건 어떤 문제일까요 단순 기기의 버퍼링인가요?

    • @goldmetal
      @goldmetal  3 года назад +1

      바닥의 경계에 걸려서 그렇습니다. 플레이어 콜라이더를 캡슐콜라이더2D 로 바꾸시고 구르지 않도록 리지드바디에서 Freeze Rotation Z를 체크해주세요.

    • @conm8119
      @conm8119 3 года назад

      감사합니다!

  • @JaeRo1339
    @JaeRo1339 2 года назад

    메탈횽님... 형님영상 따라하가는중에 플랫폼들의 X축 값을 일정하게 변경해서 형님처럼 똑같이 나열을 했는데, 게임창으로 들어가니 중간중간 공간이 비어있는게 보여요... 왜 저만 이럴까요슈퓨ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
    ++추가로 24:17 을 완료한 후 키보드로 키입력을 해도 방향만 바뀌고 움직이지를 않네요.. 그래서 플레이어 움직이는 코드만 냅두고 전부 지운다음 실행해보니.. 움직이는 코드가 먹히지를 않아요.. 움직임에 관련한 코드 지웠다가 다시 쓰고 저장하니 움직이긴하는데.. 계속 저 flipX 코드만 작성하면 캐릭터 움직임 코드가 먹통이 되네요..

    • @goldmetal
      @goldmetal  2 года назад +1

      따로따로 떨어져보이는건 픽셀 퍼펙트가 없어서 그렇습니다.
      카메라에서 Pixel Perfect 컴포넌트를 추가하시고 Pixel Per Unit을 16으로, 해상도를 자유롭게 조절하신 후 Run Edit 누르시면 적용됩니다.
      움직이지 않는건 코드에 에러가 있거나 속도 변수 값이 0이라서 그렇습니다. 인스펙터 확인해보세요

    • @JaeRo1339
      @JaeRo1339 2 года назад

      @@goldmetal 픽셀퍼펙트로 해결했습니다! 그런데 움직이지않는거에 관해선..
      움직이긴 합니다만.. 일정플로어 위에서만 움직임이 멈추네요.. 가만히있으면 더이상안움직이고.. 그 전의 플로어부터 빠르게 뛰어오면 멈칫하다가 건너가지구...x, y값 전부 일정하게 했는데도 불구하구요.. 혹시 박스콜라이더가 문제가 있는걸까요?

    • @goldmetal
      @goldmetal  2 года назад

      @@JaeRo1339 이 강좌에서 충돌 여백완 거의 없앴기 때문에 미세하게라도 턱에 걸려서 그렇습니다. 플레이어의 콜라이더를 캡슐콜라이더2D 로 바꾸시면 잘 움직일거에요. 대신 구를 수 있으니 리지드바디의 Freeze Rotation Z 체크해주세요

    • @JaeRo1339
      @JaeRo1339 2 года назад

      @@goldmetal 오우.. 감사합니다! 아주 딱 맞게 설정하더라도 미세하게나마 턱에 걸리긴 하는군요.. 하나더 배워갑니다! 감사합니다 메탈형님!

    • @goldmetal
      @goldmetal  2 года назад

      @@JaeRo1339 턱에 걸리는 이유는 이 강좌에서는 Edit > Project Setting > Physics2D의 Min Distance를 없앴기 때문입니다. 이 수치를 원상복귀하고 대신 콜라이더의 높이를 조절한다면 훨씬 수월해질겁니다