我正在为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;
}
}
}发布于 2016-03-07 14:41:58
会不会是你没有报道player.transform.position.y == height的案例?我可以看到您检查的是比height更大/更小的,但不是相等的。这可能会导致不必要的行为,就像您所描述的那样。
如果这就是问题所在,请告诉我。
发布于 2016-03-08 02:56:29
这段代码实际上起作用了。这个问题最终出现在我的playerscript中,我在其中添加了一段代码,其中有一个bug,如果你按下跳转按钮,播放器将陷入跳转动画。
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));
}
}在进行了一些故障排除和删除代码后,我终于发现了这段代码,然后当我尝试使用触摸控件而不是键盘时,我注意到我实际上不能像使用键盘那样按住跳转按钮,所以我并不真正需要这段代码。所以这次我是自己最大的敌人。
https://stackoverflow.com/questions/35835836
复制相似问题