C# Unity3d flappy bird教程-空格按钮不起作用

C# Unity3d flappy bird教程-空格按钮不起作用,c#,unity3d,flappy-bird-clone,C#,Unity3d,Flappy Bird Clone,我是Unity3d的初学者。我有一些android编程的背景,但没有任何C#经验。根据本教程,我尝试做的第一件事是创建一个flappy bird游戏的克隆,称为flappy plane 问题是,当我试图编写一个脚本,允许玩家用代码移动(player.cs)时 using UnityEngine; using System.Collections; public class player: MonoBehaviour { public Vector2 jumpForce = new

我是Unity3d的初学者。我有一些android编程的背景,但没有任何C#经验。根据本教程,我尝试做的第一件事是创建一个flappy bird游戏的克隆,称为flappy plane

问题是,当我试图编写一个脚本,允许玩家用代码移动(player.cs)时

using UnityEngine;

using System.Collections;


public class player: MonoBehaviour {



public Vector2 jumpForce = new Vector2(0,300);

public Vector2 jumpForce2 = new Vector2(0,-300);
// Use this for initialization


// Update is called once per frame

void Update () {


if (Input.GetKeyUp("space")){

    Rigidbody2D.velocity = Vector2.zero;

    Rigidbody2D.AddForce(jumpForce);


 }

}
}
我得到一个错误“访问非静态成员'UnityEngine.Rigidbody2D.velocity'需要对象引用”。我已经在谷歌上搜索过了,建议使用GetComponent()访问Rigidbody2d。velocity

所以我改变了

    Rigidbody2D.velocity = Vector2.zero;

    Rigidbody2D.AddForce(jumpForce);

GetComponent().velocity=Vector2.0;
GetComponent().AddForce(jumpForce);
错误消失了,我可以将脚本添加到对象中,但我仍然没有得到所需的操作-在我点击“播放”后,对象变为不可见,只是倒下,对空格键没有反应。我做错了什么?
谢谢你的回答

可能是您没有添加足够的力使对象向上移动

从技术上讲,你的代码没有问题。(尽管你的问题中确实有些东西混在一起)。问题在于你没有在每一帧上增加任何力

基本上,在这一刻,当你按下播放按钮时,你的播放器对象处于自由落体状态,你只在按下空格键的画面上给播放器添加了一个很小的力

要解决这个问题,以下是你应该做的

  • 增加一个向上的力来抵消每一帧的重力。你可以用两种方法来做。 A.在检测空格键之前,将刚体的
    velocity.y
    设置为0(这确实是一种很有技巧的方法,但它已经足够了,不需要任何代码)

    B给玩家增加一个向上的力,使重力的效果无效。只需使用F=mg来获得需要添加的力的值

  • 您也可以在玩家的刚体上将
    iskinetic
    属性默认设置为true,按空格键将其设置为false,并在几帧(5-6帧)后返回true


  • 确保您的玩家对象和地面都有BoxCollizedR2D碰撞器保持在地面之上

    您可以为刚体保存一个引用,如
    Rigidbody2D

    然后在start put
    myRigidbody=GetComponent()然后您将使用like
    myRigidbody.AddForce(jumpForce)你的跳跃力2虽然是向下射击你的球员,但你不应该在跳跃中需要它,因为物理和重力将适用于刚体

    如果您的输入未在项目设置中设置,请尝试使用

    Input.GetKeyDown(KeyCode.Space);
    

    哇,这里有一个flappy bird克隆标签!
    Input.GetKeyDown(KeyCode.Space);