跳到一个平台上

时间:2016-03-07 03:44:37

标签: c# unity3d

我正在Untiy为Android制作2D平台游戏,我遇到了一些代码问题。当我第一次登陆平台时跳到平台上,但是当我再次跳跃时,我会穿过平台。如果玩家小于平台的高度并且当玩家高于平台时活动,那么盒子对撞机是不活动的。我认为盒子对撞机是小的,它只是错过了对撞机,所以我尝试了不同大小的对撞机,我尝试调整它激活的不同高度。此外,当我将高度设置为低时,玩家会进行双跳。我做错了什么?

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;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

可能是因为您没有涵盖player.transform.position.y == height的情况吗? 我可以看到你检查的是大于/小于height但不是平等。这可能会导致您所描述的不良行为。

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

答案 1 :(得分:0)

此代码实际上有效。这个问题最终出现在我的playercript中,我添加了一大堆代码,如果你按住跳转按钮,我会遇到一个错误。

    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));
    }
}

经过一些故障排除,去掉并删除代码试图看看为什么我跳了一跳我终于遇到了这件事然后当我尝试使用触摸控件而不是键盘时我注意到我实际上无法抓住像键盘一样跳下按钮,所以我真的不需要这段代码。所以这次我是我自己最大的敌人。