본문 바로가기

Unity Basic/03. Unity C# script basic

Unity Basic ch. 14] C#Script로 제어하기 Rigidbody 2D_Addforce

 

AddForce는 많은 버전이 있는데, 제일 많이 사용하는걸로 살펴보자.

 

 

1) AddForce

-------------------------------

컴포넌트이름.AddForce (벡터, 포스모드) 

=>

rigid.AddForce(new Vector3(1,0,0),  ForceMode2D.Impulse)

-------------------------------

 

==================

public class PlayerMove : MonoBehaviour
{
    public Rigidbody2D  rigid;

    void Start()
    {
        rigid = GetComponent();
    }

    void FixedUpdate()
    {
       rigid.AddForce(new Vector3(1,0,0), ForceMode2D.Impulse);
    }
}

==================

 

 

2) AddForce 단위벡터

-------------------------------

new Vector3(1,0,0) = transform.right

=>

rigid.AddForce(transform.right,  ForceMode2D.Impulse)

-------------------------------

 

==================

public class PlayerMove : MonoBehaviour 
{ 
    public Rigidbody2D  rigid;

    void Start() 
    { 
        rigid = GetComponent(); 
    } 

    void FixedUpdate() 
    { 
       rigid.AddForce(transform.right, ForceMode2D.Impulse); 
    } 
}

==================

 

3) AddForce 단위벡터 * speed

 

-------------------------------

public float speed;

=>

rigid.AddForce(transform.right*speed,  ForceMode2D.Impulse)

-------------------------------

 

==================

public class PlayerMove : MonoBehaviour 
{ 
    public Rigidbody2D  rigid;

    void Start() 
    { 
        rigid = GetComponent(); 
    } 

    void FixedUpdate() 
    { 
       rigid.AddForce(transform.right*speed, ForceMode2D.Impulse); 
    } 
}

==================

 

-> script에서 speed 변수에 값을 10 정도 설정하고 실행해보자. 

 

 

4) ForceMode2D

rigid.AddForce(transform.right*speed,  ForceMode2D.Force)

rigid.AddForce(transform.right*speed,  ForceMode2D.Impulse)

 

3d추가

rigid.AddForce(transform.right*speed,  ForceMode.VelocityChange)

rigid.AddForce(transform.right*speed,  ForceMode.Acceleration)

Force 해당 리지드바디(rigidbody)의 질량을 사용해서, 연속적인 힘(force)을 가하는 경우에 사용합니다.
Acceleration 질량을 무시하고, 리지드바디에(rigidbody)에 연속적인 가속력(Acceleration)을 가합니다.
Impulse 리지드바디의 질량을 사용해서, 짧은 순간의 힘을 가하는 경우에 사용합니다.
VelocityChange 질량을 무시하고, 리지드바디(rigidbody)에 속도 변화를 짧은 순간에 적용할 경우에 사용합니다.

https://docs.unity3d.com/kr/530/ScriptReference/ForceMode.html

 

** 더해보기

포스모드2D를 변경 해서 어떻게 가는지 살펴보자.

 

 

 

 

 

참고 : 

https://docs.unity3d.com/kr/530/ScriptReference/Rigidbody.AddForce.html