*공부하는 중인 아마추어의 의견이니 좋은 방법이 있으면 댓글 부탁드리겠습니다.
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(-3, 0, 0);
}
public void RButtonDown()
{
transform.Translate(3, 0, 0);
}
|
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()
{
a = false;
Debug.Log("RightUp");
}
public void RightDown()
{
a = true;
Debug.Log("RightDown");
}
public void LeftUp()
{
b = false;
Debug.Log("LeftUp");
}
public void LeftDown()
{
b = true;
Debug.Log("LeftDown");
}
|
cs |
'웹, 게임 제작' 카테고리의 다른 글
유니티 (초보/ 중급/ 고급) 책 추천, 볼만한 내용들 (0) | 2020.08.27 |
---|---|
한장짜리 기획서 쓰기 [유니티 게임 제작 입문] (0) | 2020.08.26 |
유니티 플레이어 이동 관련 코드 모음 (0) | 2020.08.25 |
레벨 디자인에 대해서 [유니티 게임 제작 입문] (0) | 2020.08.24 |
재미 만들기에 대해서 [유니티 게임 제작 입문] (0) | 2020.08.24 |
댓글