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

在c#unity中为2d精灵添加速度,c#,unity3d,2d,flappy-bird-clone,C#,Unity3d,2d,Flappy Bird Clone,嗨,我想知道是否有人能帮我修改练习代码(我在做真正的东西之前先做练习代码,因为我就是这样做的)它基本上是一个需要用户点击屏幕的对象,这样它就不会像flappy bird那样触地。然而,尽管我已经将重力正确地应用到精灵上,但我无法确定速度部分(我的代码是,每当用户用鼠标单击或按空格键时,对象都会像飞鸟一样向上移动) 你能修复这个错误吗?因为每次我为精灵设置统一的速度,运行程序,精灵就一直在下降,无论我点击或轻触空格键多少次,精灵都不会停止下降,即使我提高速度。首先,正确的更新函数是大写U,所以Up

嗨,我想知道是否有人能帮我修改练习代码(我在做真正的东西之前先做练习代码,因为我就是这样做的)它基本上是一个需要用户点击屏幕的对象,这样它就不会像flappy bird那样触地。然而,尽管我已经将重力正确地应用到精灵上,但我无法确定速度部分(我的代码是,每当用户用鼠标单击或按空格键时,对象都会像飞鸟一样向上移动)


你能修复这个错误吗?因为每次我为精灵设置统一的速度,运行程序,精灵就一直在下降,无论我点击或轻触空格键多少次,精灵都不会停止下降,即使我提高速度。

首先,正确的更新函数是大写U,所以
Update()
而不是
update()
。然后,由于你没有做任何物理方面的事情,你可以在
update
中做任何事情,并且根本不使用
FixedUpdate
。因此你可以删除
didFlap
变量,直接在
if(Input.GetKeyDown…)中添加到
Velocity
block。此外,关于重力,你将重力乘以时间两倍。deltaTime在那里,所以删除第一个。这应该可以让你开始了。

你读过我的答案吗?更新方法名称不正确,除非正确,否则Unity不会调用它。
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;
    }
}