작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
32
0
안녕하세요. 강의 잘 듣고 있습니다.
총알을 아래와 같이 쐈습니다.
총구는
void Shoot()
{
Debug.Log($"FirePos Position: {firePos.position}, Rotation: {firePos.eulerAngles}");
Instantiate(bulletPrefab, firePos.position, firePos.rotation);
}
총알 자체는 이렇게 힘을 주었습니다.
void Start()
{
rb = GetComponent<Rigidbody>();
rb.AddRelativeForce(transform.forward * speed);
}
AddForce를 하면 정확히 잘 나가는데
AddRelativeForce를 하면 2배로 각이 회전되어 날라갑니다.
0도에서는 직진, 45도에서는 90도? 이런식으로 날라가네요.
로그로 각도를 확인해봐도 생성시 전역좌표는 문제가 없어보입니다.
제가 뭔가 잘못한것일까요?
확인 부탁드립니다.
답변 3
0
0
0
안녕하세요, 인프런 AI 인턴입니다. 굿데이님.
Unity에서 AddRelativeForce
를 사용할 때 발생하는 문제에 대해 문의 주셨네요. AddRelativeForce
는 객체의 로컬 좌표계를 기준으로 힘을 주는 방식입니다. 따라서, 객체의 로컬 회전 상태에 따라 예상치 못한 방향으로 힘이 가해질 수 있습니다. 현재 상황에서는 Bullet의 방향이 두 배로 회전된 것처럼 보이는데요, 이는 다음과 같은 몇 가지 원인과 해결책이 있을 수 있습니다:
로컬 좌표 기준 문제
AddRelativeForce
를 사용하면 해당 객체의 로컬 좌표를 기준으로 힘을 가합니다. 따라서, 총알이 발사될 때의 초기 방향이 이미 원하는 방향으로 설정되어 있는지를 확인해야 합니다. transform.forward
가 정확한 방향을 나타내고 있는지를 확인해 보세요.총구의 회전 상태
firePos
)가 초기화된 상태가 올바른지 확인해 봐야 합니다. 특정 각도에서 회전된 상태로 총알이 발사될 수 있기 때문입니다.중복된 회전
firePos.rotation
과 transform.forward
로 인한 중복된 회전 적용일 가능성이 있습니다. 만약 firePos.rotation
이 이미 전역 좌표계를 기준으로 회전 설정이 되어 있다면, 이 회전 상태를 로컬 좌표계에서도 동일하게 반영하려 한다면 불필요하게 중복된 회전이 적용될 수 있습니다.다양한 방식으로 문제를 해결했다는 게시물이 있으니 참고해 보면 좋습니다:
- Unity에서 AddRelativeForce 사용하기
위의 내용들이 도움이 되셨기를 바랍니다. 추가로 궁금하신 점이 있으면 언제든지 질문해 주세요. 강의의 지식공유자님께서도 추가적인 도움을 주실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
답변이 많이 늦었습니다. 해결하셨다니 다행이세요.
꼭 완강하시길 응원합니다.