2014-03-03 2 views
0

안녕하세요, 저는 누군가 연습 ​​코드를 수정하는 데 도움이 될지 궁금합니다 (실제로 연습하기 전에 연습 코드를 작성하기 때문입니다). 이는 기본적으로 사용자가 필요한 객체이기 때문에입니다. 비록 그것이 내가 스피드 섹션을 고칠 수없는 스프라이트에 중력을 올바르게 적용했지만 (즉, 코딩 된 코드는 사용자가 마우스를 클릭하거나 객체가 플래 피 버드처럼 이동 스페이스 키)C# 유니티에서 2d 스프라이트에 속도 추가하기

using UnityEngine; 
using System.Collections; 

public class BirdMovment : MonoBehaviour { 

    Vector3 Velocity = Vector3.zero; 
    public Vector3 gravity; 
    public Vector3 flapVelocity; 
    public float maxSpeed = 5f; 

    bool didFlap = false; 

    // Use this for initialization 
    void Start() { 

    } 

    void update(){ 
     if (Input.GetKeyDown (KeyCode.Mouse0)) 
     { 
      didFlap = true; 
     } 
    } 

    // Update is called once per frame 
    void FixedUpdate() { 
     Velocity += gravity* Time.deltaTime; 

     if (didFlap) { 
      didFlap = false; 
      Velocity += flapVelocity; 

     } 
     Velocity = Vector3.ClampMagnitude (Velocity, maxSpeed); 

     transform.position += Velocity * Time.deltaTime; 
    } 
} 

당신이 내가 아무리 스프라이트 그냥 떨어지는 계속해서 프로그램을 실행 스프라이트 광고에 대한 통일의 속도를 설정하지 않고마다 같은 오류를 수정하십시오 수 있습니다 많은 IC 핥아 주거나 공간 키를 누르십시오. 속도를 높이더라도 스프라이트가 떨어지는 것을 멈추지 않습니다.

답변

1

먼저 올바른 업데이트 함수는 대문자 U이므로 update() 대신 Update()입니다. 그런 다음 물리학으로 아무 것도하지 않기 때문에 Update에서 모든 것을 수행 할 수 있으며 FixedUpdate을 전혀 사용하지 않아도됩니다. 따라서 didFlap 변수를 삭제하고 블록에 직접 추가하면 if (Input.GetKeyDown ...) 블록 안에 있습니다. 또한, 중력과 관련하여 두 번 곱하기 Time.deltaTime으로 두 번 곱하기 때문에 첫 번째 것을 제거하십시오. 그것은 당신을 시작해야합니다.

+0

내 대답을 읽었습니까? 업데이트 메서드 이름이 정확하지 않으면 Unity에 의해 호출되지 않습니다. –