(주) 망나니 힘집
[UNITY] 오브젝트를 이동 본문
<이번 시간은 스크립트내에서 컴포넌트를 가져와서 오브젝트를 이동시키는 방법에 대해서 알아보겠습니다. >
이 글은 골드메탈님 수업을 듣고 작성하였습니다.
* 컴포넌트를 스크립트로 가져오는 방법 *
public class NewBehaviourScript : MonoBehaviour
{
//컴포넌트를 가져오는 방식
//선언
Rigidbody rigid;
void Start()
{
//초기화
rigid = GetComponent<Rigidbody>();
}
}
* 속력 올리기 *
//velocity : 현재 이동 속도
public class NewBehaviourScript : MonoBehaviour
{
//컴포넌트를 가져오는 방식
//선언
Rigidbody rigid;
void Start()
{
//초기화
rigid = GetComponent<Rigidbody>();
rigid.velocity = Vector3.right;
// >>> 오브젝트가 오른쪽으로 이동한다.
// left : 왼쪽으로 이동.
// forward , back
rigid.velocity = new Vector3(2, 4, -1);
//>>> 4만큼 점프를 해서 이동한다.
}
void Update()
{
rigid.velocity = new Vector3(2, 4, -1);
//업데이트에서 실행하면 무한으로 올라간다.
}
void FIxedUpdate()
{
rigid.velocity = new Vector3(2, 4, -1);
//유니티에선 Rigidbody 관련 코드는 FixedUpdate에서 작성하는 것을 권장한다. ☆
}
}
* 힘으로 오브젝트를 미는 방법 *
public class NewBehaviourScript : MonoBehaviour
{
Rigidbody rigid;
void Start()
{
rigid = GetComponent<Rigidbody>();
rigid.AddForce(Vector3.up * 50, ForceMode.Impulse);
//AddForce : Vec 의 방향과 크기로 힘을 준다.
// 보통 캐릭터가 점프를 뛸 때 사용한다.
//ForceMode : 힘을 주는 방식(가속, 무게 반영)
//Impulse는 mass 영향을 받기 때문에 조절 해주어야 한다.
//>>> 오브젝트가 위로 뜬다.
}
}
* 버튼 입력으로 오브젝트 이동 *
public class NewBehaviourScript : MonoBehaviour
{
Rigidbody rigid;
void Start()
{
rigid = GetComponent<Rigidbody>();
if(Input.GetButtonDown("Jump"))
{
rigid.AddForce(Vector3.up * 50, ForceMode.Impulse);
//스페이스바를 누르면 오브젝트가 위로 이동한다.
Debug.Log(rigid.velocity);
//AddForce는 가속도 부여 , 계속 속도 증가한다.
}
Vector3 vec = new Vector3(
Input.GetAxisRaw("Horizontal"),
0,
Input.GetAxisRaw("Vertical"));
rigid.AddForce(vec, ForceMode.Impulse);
//>>> 누르는 값만큼 x, z 축에 따라 움직인다.
//RigidBody 이동은 훨씬 자연스럽다.
}
}
+ 쓰는 방식 추가
float h = Input.GetAxisRaw("Horixontal");
float v = Input.GetAxisRaw("Vertical")
rigid.AddForce(new Vector3(h, 0 , v ),ForceMode.Impulse)
*오브젝트에 회전력을 주는 방법*
public class NewBehaviourScript : MonoBehaviour
{
Rigidbody rigid;
void Start()
{
rigid = GetComponent<Rigidbody>();
rigid.AddTorque(Vector3.up);
//AddTorque(Vec) : Vec 방향을 축으로 회전력이 생긴다.
//>>> y축을 기준으로 오브젝트가 회전한다.
}
}
<이번 시간은 스크립트내에서 컴포넌트를 가져와서 오브젝트를 이동시키는 방법에 대해서 알아보았습니다. >
<다음 물리 충돌 이벤트와 트리거 이벤트에 대해서 알아보겠습니다. >
'유니티 최고 > Unity' 카테고리의 다른 글
[UNITY] UI- 텍스트, 이미지, 버튼, 앵커 (0) | 2022.01.18 |
---|---|
[UNITY] 물리 충돌 이벤트와 트리거 이벤트 (0) | 2022.01.18 |
[UNITY] rigidbody , collider , 재질, 물리재질 (0) | 2022.01.18 |
[UNITY] DeltaTime (0) | 2022.01.17 |
[UNITY] MoveTowards() / SmoothDamp() / Lerp() / Slerp() (0) | 2022.01.17 |