首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使球员上下弹跳?

如何使球员上下弹跳?
EN

Stack Overflow用户
提问于 2014-12-23 07:28:39
回答 2查看 201关注 0票数 0

我正在制作一个非常简单的android游戏,但我在编码方面还是新手。我想让我的球员不断地在屏幕上上下移动,但不能让它变成文字。

代码语言:javascript
复制
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;
}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-25 19:53:40

代码似乎有两个问题。第一种情况是,如果游戏对象在屏幕上启动,而不是屏幕外,那么它的速度将保持在Vector2.0。第二个问题是,Screen.height是以像素为单位的,而transform是在统一的单位中。希望这能有所帮助。

代码语言:javascript
复制
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;
}
}
票数 0
EN

Stack Overflow用户

发布于 2014-12-23 07:49:20

您可以尝试这样的方法(摘自Unity 请看这里 )。注意,代码并没有被实际测试:)

代码语言:javascript
复制
public class DuckBehaviour : MonoBehaviour {

 float speed = 1f;
 float verticality;
 Vector3 pointB;

 IEnumerator Start () {
    Vector3 pointA = transform.position;
    while (true) {
       yield return StartCoroutine(MoveObject(transform, pointA, pointB, 3.0));
       yield return StartCoroutine(MoveObject(transform, pointB, pointA, 3.0));
    }
  }

 IEnumerator MoveObject (Transform thisTransform, Vector3 startPos, Vector3 endPos, float time) {
     float i = 0.0f;
     float rate = 1.0f / time;
     while (i < 1.0f) {
         i += Time.deltaTime * rate;
         thisTransform.position = Vector3.Lerp(startPos, endPos, i);
         yield return null; 
      }
   }

 }

C#要求您使用StartCoroutine方法,任何用作协同的方法都必须返回IEnumerator。本页解释了协同机制的工作原理

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27615888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档