블럭이 돌아가는 부분을 확인하려고 유튜브에서 영상을 찾음 

https://www.youtube.com/watch?v=n0MPmeu662U 

 

우선 메인 씬을 NODE2D(main)로 만들고 자식으로 AREA2D(cell1)로 만듬

2D 화면에서 세로 점 3개 아이콘을 누르고 스냅 구성에서 격자 단계를 50픽셀로 만든다

블록 셀을 씬으로 다시 만든 후에 스프라이트 노드를 넣고 노드에는 다운받은 파이프 이미지를 넣는다

그리고 콜루젼 셰입 2D를 노드로 넣고 격자 단계와 이미지에 맞게 넓힌다 

그리고 입력 메뉴에서 마우스 왼쪽 버튼을 "mouse_l"로 입력한다

 

cell1 노드에 스크립트를 넣는다 

스크립트를 넣고 블록을 돌리기 위한 코드를 추가한다

함수는 인풋을 받기 위해 오른쪽의 노드에서 CollusionObject2D를 넣고 연결한다.

버튼을 누르면 90로 돌지 않고 180도로 도는, 두번 돌아가는 현상이 생긴다

이건 스택오버플로우에서 이유를 찾았는데 is_action_just_pressed가 원래 input(입력)에 맞지 않기 때문이며 아래와 같이 수정해야 한다

https://stackoverflow.com/questions/69981662/godot-input-is-action-just-pressed-runs-twice

그리고 tween 노드를 추가해서 회전하는 애니메이션을 추가한다.

마지막으로 can_rotate 변수를 넣어 돌고 있을 때 다시 버튼을 누르지 못하게 막는다

cell1을 복사해서 cell2를 만들고

scanner1 변수와 cell_clear 변수를 false 상태로 만든다

그리고 scanner1을 자식을 선택하지 못하도록 하고, 창 오른쪽의 노드로 가서 Area2D의 area_entered와 area_exited를 연결한다

연결된 함수는 영역을 체크하고 들어오면 scanner1에 true를, 벗어나면 scanner1에 false를 반환한다

그리고 각 연결 함수에 check_cell() 함수를 연결하고 이 함수는 scanner1의 값을 cell_clear에 넣는다

값이 들어갔을 때 프린트 함수로 들어갔는지 확인할 수 있다

위의 함수를 정리하고, 연결된 것을 표현하는 걸로 넘어간다

cell1의 콜루젼 쉐입을 클릭하고 인스펙터에서 캔버스 아이템의 모듈레이트를 초록색으로 바꾼다

중간 설명은 자막이 부족해 알지 못하고(아마 접촉이 세 군데라는 뜻 같다) cell1의 monitorable을 사용하지 않으면

한 번만 체크가 들어온다 아마 전체 콜루전의 충돌은 체크를 안한다는 의미로 보인다

 

나머지는 내일...

,