在c#unity中为2d sprite添加速度

时间:2014-03-03 16:22:13

标签: c# unity3d 2d flappy-bird-clone

嗨,我想知道是否有人可以帮我修复练习代码(我在制作真实的东西之前制作练习代码,因为它只是我如何滚动)它基本上是一个对象,需要用户点击屏幕以便尽管我已经将重力正确地应用于精灵但我无法修复速度部分(我编码的是每次用户用鼠标点击或点击空格键时对象会像飞扬的鸟)

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;
    }
}

你可以修改错误,因为每次我为精灵广告设置单位的速度运行程序精灵只是继续下降,无论我点击或点击空格键精灵不会停止下降如果我增加速度

1 个答案:

答案 0 :(得分:1)

首先,正确的Update函数使用大写U,因此Update()代替update()。然后,由于你没有用物理做任何事情,你可以在Update中完成所有事情,而根本不使用FixedUpdate。因此,您可以删除didFlap变量并直接在Velocity块内添加到if (Input.GetKeyDown ...)。此外,关于重力,你将它与Time.deltaTime相乘两次,所以删除第一个。这应该让你开始。