개발 업무를 맡고나서 UI 만들고 지우는 업무를 맡다가 쉬운 개발 업무를 맡게 되었다.
아래 서보모터 3D 오브젝트의 날개부분을 회전시킬 수 있도록 만드는 작업을 맡았다.

우선 기본큐브로 형태를 잡아봤다

날개의 회전 축이 몸쪽으로 가야하니 날개 오브젝트에 빈오브젝트를 만들어 회전축을 잡아줬다.

축을 바꾼 빈오브젝트를 부모 오브젝트로 만들어주면 회전축은 완료

스크립트는 아래와 같다.
1. inspector 창에서 컨포넌트 transform 연결할 수 있도록 설정
2. 180도까지만 돌아야하기 때문에 Mathf 함수 중 Clamp를 사용해 최대값을 지정
2. 에셋 DOTween의 DOLcalRotate를 사용해 오브젝트의 z값이 매개변수 angle을 받도록 설정
using UnityEngine;
using DG.Tweening;
public class ServoMoter : MonoBehaviour {
[SerializeField] private Transform motorWing;
[SerializeField] private int angle;
void Update(){
SetWingAngle(angle);
}
private void SetWingAngle(int angle) {
angle = Mathf.Clamp(angle, 0, 180);
motorWing.transform.DOLocalRotate(new Vector3(0, 0, angle), 0.5f);
}
}
생각보다 간단하게 해결한 것 같지만 최대값 지정을 하기 위해 for문으로 돌려보다가 잘 안되어 Clamp 함수를 서치했고 DOLocalRotate를 알기까지 얼마나 많은 시간을 소모한 것인지..
여튼 위와 같이 작성한 후 Update로 돌려보니 잘 작동한다.
스크립트를 오브젝트에 넣고 inspector창에 angle 값을 입력하면 값만큼만 잘 움직인다..
아주 간단한 업무였지만 스크립트를 작성하는 것은 아직 어려운 일이다 ㅠ
'프로그래밍⚡️ > unity' 카테고리의 다른 글
C# 유니티 상수와 열거형, 가위바위보 게임 코드 개선 (0) | 2022.07.17 |
---|---|
c# 조건문을 활용한 가위바위보 게임 만들기 (0) | 2022.07.08 |
3D 게임 제작 (1) - 방향키로 캐릭터 움직이고 점프 (0) | 2022.05.29 |
유니티 Light 오브젝트와 스크립트로 다루기 (0) | 2022.05.22 |
unity 스플래시 데미지 구현 (0) | 2022.05.10 |