유니티:힘으로 오브젝트 이동

학교의 모든 지식. SMwiki
Sam (토론 | 기여)님의 2020년 9월 4일 (금) 17:08 판 (새 문서: {{유니티}} == 개요 == 플레이어가 직접 조작할 수도 있지만, 외부의 힘으로 인해 물체가 이동하기도 한다. 자연스러운 물리적 움직임을 만...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 이동 검색으로 이동

틀:유니티

  1. 유니티:개요
  2. 유니티:기본 조작
    1. 유니티:에셋스토어
  3. 유니티:카메라
  4. 유니티:오브젝트
    1. 유니티:데이터 입력받기
    2. 유니티:오브젝트 이동(오브젝트 조작)
    3. 유니티:힘으로 오브젝트 이동
    4. 유니티:충돌 이벤트
    5. 유니티:오브젝트 작성 tip
    6. 유니티:프리팹
  5. 유니티:코딩기초
    1. 유니티:C sharp 코딩 편의기능
    2. 유니티:MonoBehaviour
    3. 유니티:이벤트 메서드
    4. 유니티:컴포넌트 조작하기
  6. 유니티:UI
  7. 유니티:게임 내 화면
  8. 유니티:플레이어
    1. 유니티:모델
    2. 유니티:캐릭터 이동
    3. 유니티:애니메이션
    4. 유니티:주인공 시점
  9. 유니티:맵
    1. 유니티:투명한 벽 만들기
    2. 유니티:내비게이션
  10. 유니티:씬
  11. 유니티:몬스터
  12. 유니티:아이템
  13. 유니티:음향
    1. 유니티:배경음
    2. 유니티:효과음
  14. 유니티:빌드
  15. 유니티:VR
    1. 유니티:VR:UI
    2. 유니티:VR:VR로 변환
  16. 유니티:팁

개요

플레이어가 직접 조작할 수도 있지만, 외부의 힘으로 인해 물체가 이동하기도 한다. 자연스러운 물리적 움직임을 만들기 위해 힘에 반응하게끔 만들어보자.

입력에 따라 물체가 특정방향성의 속도를 갖게 할 수도 있지만, 물체와의 상호작용을 위해 힘이 발생하게 하는 편이 자연스럽다.

RigidBody에 집중한다.

스크립트를 만든 후 RigidBody 컴포넌트를 변수화 하여 사용해야 한다.

public class 함수명:MonoBehaviour {
    Rigidbody 변수명;
    void Start(){
        변수=GetComponent<Rigidbody>(); //변수 초기화함. 컴포넌트를 가져온다는 의미.
        변수.velocity=new Vector3(1, 2, 3); //초기 속력을 정의할 수 있다.
        ......}

GetComponent<> //이건 자신 내부의 컴포넌트를 가져온다는 의미이다. 꺽쇠 안에 그 컴포넌트를 넣는다.

tip

물리현상 관련 명령은 FixedUpdate() 내에 사용하는 것이 권장된다.

힘 가하기

public class 함수명:MonoBehaviour {
    Rigidbody 변수명;
    void Start(){
        변수=GetComponent<Rigidbody>(); //변수 초기화함.
        변수.AddForce(벡터)

변수.AddForce(벡터, 옵션)

무게가 클 수록 더 큰 힘을 가해주어야 움직인다.

옵션 설명
ForceMode.Impulse 점프할 때, 이동할 때 다양하게 사용.

이동할 때 힘이 자연스레 발생하게끔.

        변수=GetComponent<Rigidbody>(); //변수 초기화함.
        변수.AddForce(벡터)
    
    void FixedUpdate() {
        if(Input.GetButtonDown("조작") (
        Vector3 vec = new Vector3(Input.GetAxisRaw("Horizontal"),
                                    0,
                                    Input.GetAxisRaw("Horizontal")) //키를 누르는 길이에 따라 달리 작용하게.
        변수.AddForce(vec, 옵션)

회전에 대한 고려(토크)

    변수.AddTorque(벡터, 옵션?); //옵션이 있을까?

축에 따른 회전을 만들어낸다.(물리적인 회전과 반대방향이다. ex) y축에 대해 회전한다는 명령은 물리에서 -y의 회전을 만들어낸다.)