728x90
반응형
1. 소스
키보드로 비행기 또는 카메라를 제어하는 코드 입니다.
충돌 인식이나 비행 다이나믹스 등은 전혀 적용 되지 않고, 그냥 키보드의 값만을 받아서 이동합니다.
출발, 정지, 회전, 속도 증가, 감소의 기능이 있습니다.
시작시 스페이스키를 입력해야 출발합니다.
using UnityEngine;
public class FlyingObjectSimpleController : MonoBehaviour
{
public KeyCode m_PitchPlus = KeyCode.W,
m_PitchMinus = KeyCode.S,
m_YawPlus = KeyCode.A,
m_YawhMinus = KeyCode.D,
m_RollPlus = KeyCode.Q,
m_RollMinus = KeyCode.E,
m_Move = KeyCode.Space,
m_SpeedUp = KeyCode.PageUp,
m_SpeedDown = KeyCode.PageDown;
public float m_Speed = 10, m_MaxSpeed = 200, m_ChangeStep = 10, m_RotateSpeed = 30;
bool m_IsMove;
void FixedUpdate()
{
Move();
}
void Move()
{
// 회전
if (Input.GetKey(m_PitchPlus))
transform.Rotate(Vector3.left * Time.deltaTime * m_RotateSpeed, Space.Self);
if (Input.GetKey(m_PitchMinus))
transform.Rotate(-Vector3.left * Time.deltaTime * m_RotateSpeed, Space.Self);
if (Input.GetKey(m_YawPlus))
transform.Rotate(Vector3.down * Time.deltaTime * m_RotateSpeed, Space.Self);
if (Input.GetKey(m_YawhMinus))
transform.Rotate(-Vector3.down * Time.deltaTime * m_RotateSpeed, Space.Self);
if (Input.GetKey(m_RollPlus))
transform.Rotate(Vector3.forward * Time.deltaTime * m_RotateSpeed, Space.Self);
if (Input.GetKey(m_RollMinus))
transform.Rotate(-Vector3.forward * Time.deltaTime * m_RotateSpeed, Space.Self);
// 속도 제어
if (Input.GetKeyDown(m_SpeedUp))
m_Speed += m_ChangeStep;
if (Input.GetKeyDown(m_SpeedDown))
m_Speed -= m_ChangeStep;
m_Speed = Mathf.Clamp(m_Speed, 0, m_MaxSpeed);
// 출발, 정지
if (Input.GetKeyDown(m_Move))
m_IsMove = !m_IsMove;
if (m_IsMove)
transform.position += transform.forward * Time.deltaTime * m_Speed;
}
}
2. Pitch, Roll, Yaw
3. 데모
728x90
반응형
'프로그램 > 유니티 스크립트 소스' 카테고리의 다른 글
[유니티 스크립트 소스] 유니티 에디터에서 클라이더 그리기 (0) | 2020.02.19 |
---|---|
[유니티 스크립트 소스] 리지드바디 없이 위치값으로 속도 얻기 (0) | 2020.02.18 |
[유니티 스크립트 소스] 타이머 - 카운트 다운 (1) | 2020.02.17 |
[유니티 스크립트 소스] 타이머 - 스톱 워치 (0) | 2020.02.17 |
[유니티 스크립트 소스] 프레임 레이트(Frame rate)구하기 (0) | 2020.02.16 |