본문 바로가기
웹, 게임 제작

유니티 플레이어 이동 관련 코드 모음2

by startSmall 2020. 8. 26.

*공부하는 중인 아마추어의 의견이니 좋은 방법이 있으면 댓글 부탁드리겠습니다.

 

 

 

4.가속도 이동

-rigid.velocity와 AddForce를 이용

-리기드의 속도값을 이용한 좌우가속도이동과 브레이크

-리기드바디에서 gravity값 1, LinearDrag값 2정도 하면 자연스럽게 이동했다가 멈추는것같아 보인다.

    public float maxSpeed = 5;
    Rigidbody2D rb;
    SpriteRenderer spriteRenderer;
 
    void Awake()
    {
        rb = GetComponent<Rigidbody2D>();
        spriteRenderer = GetComponent<SpriteRenderer>();
    }
 
    void Update()
    { //스피드 가속을 멈춰라
        if (Input.GetButtonUp("Horizontal"))
        {
            rb.velocity = new Vector2(rb.velocity.normalized.x * 0.5f, rb.velocity.y);
        }
    }
 
    private void FixedUpdate()
    { //이동
        float h = Input.GetAxisRaw("Horizontal");
        rb.AddForce(Vector2.right * h, ForceMode2D.Impulse);
 
        if (rb.velocity.x > maxSpeed) //right max speed
            rb.velocity = new Vector2(maxSpeed, rb.velocity.y);
        else if (rb.velocity.x < maxSpeed * (-1)) //left max speed
            rb.velocity = new Vector2(maxSpeed * (-1), rb.velocity.y);
    }
cs

 

 

 

 

5.관성있게 이동

    public float maxSpeed;
    Rigidbody2D rb;
 
    void Awake()
    {
        rb = GetComponent<Rigidbody2D>();
    }
 
    private void FixedUpdate()
    {
        //관성있게 이동
        float h = Input.GetAxisRaw("Horizontal");
        rigid.AddForce(Vector2.right * h, ForceMode2D.Impulse);
 
        if (rigid.velocity.x > maxSpeed)
        {
            rigid.velocity = new Vector2(maxSpeed, rigid.velocity.y);
        }
 
        else if (rigid.velocity.x < maxSpeed * (-1))
        {
            rigid.velocity = new Vector2(maxSpeed * (-1), rigid.velocity.y);
        }
    }
 
    void Update()
    {
        //버튼 업일때 관성 정지. 수치가 높을수록 관성 정지가 덜됨.
        if (Input.GetButtonUp("Horizontal"))
        {
            rigid.velocity = new Vector2(rigid.velocity.normalized.x * 2f, rigid.velocity.y);
        }
    }
cs

 

 

 

 

6.버튼으로 이동

-체스 말이 이동하듯이 뚝뚝 끊겨서 이동한다

-플레이어 스크립트에 적고 버튼의  Onclick()+에서 추가해주면 간편하다

public void LButtonDown()
{
transform.Translate(-300);
}
 
public void RButtonDown()
{
transform.Translate(300);
}
cs

 

 

 

 

7.버튼으로 실시간 이동

-버튼에 이벤트 트리거 컴포넌트추가. 포인터 업/다운 하고 플레이어를 첨부한다.

 
public Transform player;
public float maxSpeed;
bool a, b;
 
 
void Update()
{
if (a)
{
player.position += Vector3.right * maxSpeed * Time.deltaTime;
}
if (b)
{
player.position += Vector3.left * maxSpeed * Time.deltaTime;
}
}
 
public void RightUp()
{
= false;
Debug.Log("RightUp");
}
public void RightDown()
{
= true;
Debug.Log("RightDown");
 
}
public void LeftUp()
{
= false;
Debug.Log("LeftUp");
 
}
public void LeftDown()
{
= true;
Debug.Log("LeftDown");
}
cs

 

 

댓글