로봇 팔 회전하기

  • Rigidbody의 AngularVelocity를 사용함
  • 문제 발생 : 땅에 고정된 채로 회전하는게 아니라서 로봇 바닥부분이 드드드 하고 떨리면서 포지션이 바뀜
  • 해결 시도 : AngularVelocity 대신 MoveRotation 을 써봄
// 기존 코드
controller.BodyRb.angularVelocity =  
    (axisInput > 0 ? controller.BodyRotationAngle : -controller.BodyRotationAngle) * moveDirection;
    
// 수정 코드
float deltaAngle = controller.BodyRotationAngle * axisInput * Time.fixedDeltaTime;  
Quaternion deltaRot = Quaternion.AngleAxis(deltaAngle, RotationAxis);  
controller.BodyRb.MoveRotation(controller.BodyRb.rotation * deltaRot);
 
  • 되긴 했는데… 돌아가는 상태가 이상함

  • 힌지 조인트를 써서 땅이랑 몸통을 잇기로 결정

  • 근데 그랬더니 더 이상해짐

  • Idle 상태에서 angularVelocity를 0으로 하니까 생긴 문제였음.

  • 근데? 이젠 돌아가질 않음

  • 알고보니 Motor가 Struct였는데 내가 대입을 안하고 내부 값만 바꾸고 있었음 ㅇㄴ 어쩐지 안돌아가더라

  • 이제 잘 돌아감

  • 근데??? 또 코드 추가하니까 이상하게 돌아가서 그냥 Transform Rotation 쓰기로 함 ㅡㅡ

로봇 팔 상태 관리하기