C# 如何让玩家上下弹跳?

C# 如何让玩家上下弹跳?,c#,unity3d,2d,C#,Unity3d,2d,我正在制作一个非常简单的android游戏,但我对编码还不熟悉。我想让我的播放器在屏幕上不停地上下移动,但不能让它变成wordk public class DuckBehaviour : MonoBehaviour { Vector3 velocity = Vector3.zero; float speed = 1f; float verticality; // Use this for initialization void Start () { } // Update is ca

我正在制作一个非常简单的android游戏,但我对编码还不熟悉。我想让我的播放器在屏幕上不停地上下移动,但不能让它变成wordk

public class DuckBehaviour : MonoBehaviour {

Vector3 velocity = Vector3.zero;
float speed = 1f;
float verticality;



// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

    if (transform.position.y < Screen.height -10) {
        velocity.y = 0.7f;
    } else if (transform.position.y > 10) {
        velocity.y = -0.7f;
    }
    transform.position += velocity * Time.deltaTime;
}
}
公共类行为:单一行为{
矢量3速度=矢量3.0;
浮动速度=1f;
浮动垂直度;
//用于初始化
无效开始(){
}
//每帧调用一次更新
无效更新(){
if(变换位置y<屏幕高度-10){
速度y=0.7f;
}否则如果(变换位置y>10){
速度y=-0.7f;
}
transform.position+=速度*时间增量;
}
}

你可以试试这样的东西(摘自Unity论坛-)。 注意,代码实际上没有经过测试:)

公共类行为:单一行为{
浮动速度=1f;
浮动垂直度;
向量3点B;
IEnumerator启动(){
向量3点A=变换位置;
while(true){
产生返回start例程(MoveObject(transform,pointA,pointB,3.0));
产生返回start例程(MoveObject(transform,pointB,pointA,3.0));
}
}
IEnumerator移动对象(变换thisTransform、Vector3 startPos、Vector3 endPos、浮点时间){
浮点数i=0.0f;
浮动率=1.0f/次;
而(i<1.0f){
i+=时间增量*速率;
thisttransform.position=Vector3.Lerp(startPos,endPos,i);
收益返回空;
}
}
}

C#要求您使用start例程方法,任何用作协同例程的方法都必须返回IEnumerator。本页解释。

代码似乎有两个问题。首先,如果游戏对象在屏幕上启动而不是在屏幕外启动,那么它的速度将保持在矢量2.0。第二个问题是Screen.height以像素为单位,而transform以Unity为单位。希望这有帮助

public class DuckBehaviour : MonoBehaviour {

Vector3 velocity = Vector3.zero;
float speed = 1f;
float verticality;



// Use this for initialization
void Start () {
    velocity.y = 0.7f;
}

// Update is called once per frame
void Update () {
    //Requires that an orthographic camera named "MainCamera" exists with y transform of 0
    if (transform.position.y < -Camera.main.orthographicSize) {
        velocity.y = 0.7f;
    } else if (transform.position.y > Camera.main.orthographicSize) {
        velocity.y = -0.7f;
    }
    transform.position += velocity * Time.deltaTime;
}
}
公共类行为:单一行为{
矢量3速度=矢量3.0;
浮动速度=1f;
浮动垂直度;
//用于初始化
无效开始(){
速度y=0.7f;
}
//每帧调用一次更新
无效更新(){
//要求名为“MainCamera”的正交摄影机存在且y变换为0
if(transform.position.y<-Camera.main.orthographicSize){
速度y=0.7f;
}else if(transform.position.y>Camera.main.orthographicSize){
速度y=-0.7f;
}
transform.position+=速度*时间增量;
}
}
public class DuckBehaviour : MonoBehaviour {

Vector3 velocity = Vector3.zero;
float speed = 1f;
float verticality;



// Use this for initialization
void Start () {
    velocity.y = 0.7f;
}

// Update is called once per frame
void Update () {
    //Requires that an orthographic camera named "MainCamera" exists with y transform of 0
    if (transform.position.y < -Camera.main.orthographicSize) {
        velocity.y = 0.7f;
    } else if (transform.position.y > Camera.main.orthographicSize) {
        velocity.y = -0.7f;
    }
    transform.position += velocity * Time.deltaTime;
}
}