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