2017-05-16 1 views
0

안녕 얘들 아, 내 첫 번째 앱 만들기. 나는 이것이 꽤로드 된 질문이지만 스크립트 코드가 다르기 때문에 예제를 따르는 데 어려움을 겪고 있음을 안다. 2D 플랫폼 러너를 만들고 있습니다. 시작하기 전에, 모든 물리학은 아니더라도 플랫폼, 환경 및 대다수를 만들었습니다. 이 시점에서 플레이어는 단지 하나의 서클 (그냥 장소 홀더)입니다. 원은 왼쪽에서 오른쪽으로 이동하고 점프 할 수 있습니다. 이제 실제 플레이어 스프라이트를 만들고 걷고, 뛰고, 유휴 상태로 애니메이션을 만들었습니다. 새 스프라이트 애니메이션을 스크립트뿐만 아니라 현재 서클 자리 표시 자에 어떻게 적용합니까? 다음 단계는 애니메이터에 들어가서 전환 작업을 시작하는 것입니다. Im은 현재 스크립트에 애니메이션을 추가하는 방법을 모르겠습니다. 이것이 어려움이 될 것이라는 것을 알고 있었고 필요한 정보가 있으면 알려 주시기 바랍니다. 고마워요.Unity에 플레이어에게 애니메이션을 적용하는 방법

내 서클 플레이어/자리 표시 자에 현재 연결된 "Controls.cs"입니다. 내 CheckGround가 첨부되어 있습니다. 다른 모든 것들은 그가 점프하고있는 플랫폼과 관련이 있어야하고 나는 바뀔 것이라고 생각하지 않는다. 다시 말하지만, 나는 현재의 서클/자리 표시 자 대신 자리를 잡고 싶은 스프라이트를 걷고, 점프하고 유휴 상태로 만듭니다. 왼쪽 및 오른쪽 화살표를 누를 때 걷는 애니메이션을, 점프 버튼을 눌렀을 때 재생할 펌프 애니메이션을, 그리고 플레이어가 그냥 멈추었을 때 유휴 애니메이션을 재생해야합니다. 다시 한번 고마워요!

using UnityEngine; 
using System.Collections; 


public class Controls : MonoBehaviour 
{ 
    public Rigidbody2D rb; 
    public float movespeed; 
    public float jumpheight; 
    public bool moveright; 
    public bool moveleft; 
    public bool jump; 
    public Transform groundCheck; 
    public float groundCheckRadius; 
    public LayerMask whatIsGround; 
    private bool onGround; 

    // Use this for initialization 
    void Start() 
    { 
     rb = GetComponent<Rigidbody2D>(); 

    } 

    void FixedUpdate() 
    { 
     onGround = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, whatIsGround); 
    } 

    // Update is called once per frame 
    void Update() 
    { 



     if (Input.GetKey(KeyCode.LeftArrow)) 
     { 
      rb.velocity = new Vector2(-movespeed, rb.velocity.y); 

     } 
     if (Input.GetKey(KeyCode.RightArrow)) 
     { 
      rb.velocity = new Vector2(movespeed, rb.velocity.y); 

     } 

     if (Input.GetKey(KeyCode.Space)) 
     { 
      if (onGround) 
      { 
       rb.velocity = new Vector2(rb.velocity.x, jumpheight); 
      } 
     } 

     if (jump) 
     { 
      if (onGround) 
      { 
       rb.velocity = new Vector2(rb.velocity.x, jumpheight); 
      } 
      jump = false; 
     } 

     if (moveright) 
     { 
      rb.velocity = new Vector2(movespeed, rb.velocity.y); 
     } 
     if (moveleft) 
     { 
      rb.velocity = new Vector2(-movespeed, rb.velocity.y); 
     } 

    } 

} 

답변

0

Animation Controller에 대해 읽으십시오. 게임을 만든 후에는 gameObject에서 Animator를 가져올 수 있습니다. transform.GetComponent<Animator>() 나중에 애니메이션을 혼합하거나 재생할 수 있습니다. Unity를 사용하면 입력 조건을 만들어 애니메이션을 재생할 수 있으므로 코드를 너무 많이 입력하지 않아도됩니다.

0

확실히 애니메이션 컨트롤러를 사용하십시오.
이 비디오를 한번 보자. 나는 지금이 튜토리얼을 따라 가고있다.

https://www.youtube.com/watch?v=I0IVZhHNarg

+0

고마운 사람. 미안해. 너에게 돌아가려면 시간이 좀 걸렸어. 나는 그 자습서를 지금 시작했고 그 일은 아주 잘 진행되었다! – Andrew

관련 문제