Unity2D_캐릭터 움직이기
|
GameObject에서 Create Empty를 클릭하고 Player로 이름을 바꿔줍니다.
임의의 그림파일(gif추천)을 객체에 드래그 해 주시고~
Inspector -> Add Component -> Physics 2D를 클릭!
그리고 Rigibody 2D를 클릭!
RigidBody2D 컴포넌트에 중력속성값을 0으로 설정합니다.
0이 아니면 아래로 떨어집니다.
2D물리컴포넌트를 장착했으니 2D물리컴포넌트를 조작할 스크립트를 작성해 봅시다.
하이라키에서 Player 객체를 클릭 -> Inspector 창의 Add Component 클릭 ->New Script에서 Player로 이름을 지정하고 C# 스크립트를 생성합니다.
생성한 스크립트를 더블클릭하면! C# 소스를 넣을 수 있는 창이 뜨는데 아래와 같이 입력합니다.
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class Player : MonoBehaviour {
- private Animator animator;
- Rigidbody2D rb2d;
- Vector2 MoveVelocity;
- public float moveSpeed=10;
- void Start ()
- {
- rb2d = GetComponent<Rigidbody2D> ();
- }
- void Update ()
- {
- Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"),
Input.GetAxisRaw("Vertical"));
- MoveVelocity = moveInput.normalized*moveSpeed;
- }
- void FixedUpdate()
- {
- rb2d.MovePosition(rb2d.position+MoveVelocity*Time.fixedDeltaTime);
- }
- }
15줄
Player에서 생성한 2D물리컴포넌트를 rb2d로 명명합니다.
20줄
좌, 우, 위, 아래를 입력받습니다.
wasd가 방향키입니다.
22줄
움직임을 정규화하고 여기에 속도를 곱해서 속력을 지정합니다.
27줄
지정한 수치(현재위치+방향*속력)로 2D물리컴포넌트를 움직입니다.
기타
|
Ridgidbody로 캐릭터 움직이는 방법은
velocity, addforce, position이 있다.
position을 사용할시에는 velocity와 addforce 고장난다 ㅋㅋ ㅠㅠ
- float hor = input.getAxis("Horizontal");
- float xVel = GetPlatform().GetComponent<Rigidbody2D>().velocity.x;
- public float GetSpeedOnMovingPlatform(float speed) {
- if (OnMovingPlatform()) {
- if ((hor < 0 && xVel < 0) || (hor > 0 && xVel > 0))
- {
- speed = Mathf.Abs(xVel) + speed;
- }
- else if ((hor > 0 && xVel < 0) || (hor < 0 && xVel > 0))
- {
- speed = Mathf.Abs(Mathf.Abs(xVel) - speed);
- }
- else if (hor == 0)
- {
- speed = Mathf.Abs(xVel);
- }
- }
반응형
'응용프로그램 > 유니티(Unity)' 카테고리의 다른 글
Unity2D_착지 애니메이션, 충돌체(Collider) (0) | 2017.02.10 |
---|---|
Unity2D_횡스크롤 게임 지형만들기 (0) | 2017.02.08 |
Unity2D_애니메이션 삽입하기 (0) | 2017.02.07 |
Unity2D_애니메이션제어 (0) | 2017.02.06 |
Unity2D_애니메이션 (0) | 2017.02.06 |