首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跳到平台上

跳到平台上
EN

Stack Overflow用户
提问于 2016-03-07 11:44:37
回答 2查看 76关注 0票数 0

我正在为android制作一个2D平台游戏,我有一段代码有一些问题。当我第一次跳到平台上时,我可以降落在平台上,但当我再次跳跃时,我会从平台上掉下来。我有它,所以当玩家低于平台的高度时,盒子对撞机是无效的,当玩家高于平台时,盒子对撞机是激活的。我认为盒子对撞机太小了,只是错过了对撞机,所以我尝试了不同大小的对撞机,并尝试调整它激活的不同高度。另外,当我将高度设置为低时,玩家会做两次跳跃。那么我到底做错了什么呢?

代码语言:javascript
复制
public class Rock : MonoBehaviour 
{
    private BoxCollider2D platform;
    private PlayerScript player;

    public float height;

    void Awake() {
        player = GameObject.Find("Player").GetComponent<PlayerScript>();
        platform = GetComponent<BoxCollider2D>();
    }

    void Start () {
        platform.enabled = false;
    }

    // Update is called once per frame
    void Update () {
        if(player.transform.position.y > height){
            platform.enabled = true;
        } else if(player.transform.position.y < height){
            platform.enabled = false;
        }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2016-03-07 14:41:58

会不会是你没有报道player.transform.position.y == height的案例?我可以看到您检查的是比height更大/更小的,但不是相等的。这可能会导致不必要的行为,就像您所描述的那样。

如果这就是问题所在,请告诉我。

票数 0
EN

Stack Overflow用户

发布于 2016-03-08 02:56:29

这段代码实际上起作用了。这个问题最终出现在我的playerscript中,我在其中添加了一段代码,其中有一个bug,如果你按下跳转按钮,播放器将陷入跳转动画。

代码语言:javascript
复制
    void OnCollisionStay2D(Collision2D target) {
    if (target.gameObject.tag == "Ground") {
        grounded = true;
        anim.SetBool("Jump",false);
    }

}


public void Jump () {
    if(grounded){
        grounded = false;   
        anim.SetBool("Jump",true);
        myBody.velocity = new Vector2(myBody.velocity.x, 0);
        myBody.AddForce( new Vector2(0, jumpForce));
    }
}

在进行了一些故障排除和删除代码后,我终于发现了这段代码,然后当我尝试使用触摸控件而不是键盘时,我注意到我实际上不能像使用键盘那样按住跳转按钮,所以我并不真正需要这段代码。所以这次我是自己最大的敌人。

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

https://stackoverflow.com/questions/35835836

复制
相关文章

相似问题

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