gpt4 book ai didi

android - unity OnTriggerEnter 和 OnTriggerExit 延迟或在移动设备上不起作用

转载 作者:太空狗 更新时间:2023-10-29 14:43:09 26 4
gpt4 key购买 nike

我正在尝试确定播放器何时接地,并且使用桌面播放器,下面描述的方法非常有效,但是当编译到 Android 时表现相当奇怪,我不确定它是否只是延迟或什么,但它正在更新的 bool 很少是它应该是的。

判断玩家是否禁足的代码:

void OnTriggerEnter2D(Collider2D other) {
if (other.tag == "NormalGround") {
player.Grounded = true;
}
}

void OnTriggerExit2D(Collider2D other){
if (other.tag == "NormalGround") {
player.Grounded = false;
}
}

在桌面上这完美地工作,正如这里通过将接地 var 写入 Update() 上的文本框所演示的那样:

https://www.youtube.com/watch?v=CV0h18dz1cg

但在 Android 上,碰撞器几乎是滞后的:

https://www.youtube.com/watch?v=c66uw2_NhrQ

你可以在视频的结尾看到 var 只在我让角色跳跃后才改变...... >

碰撞器是这样设置的:

层次结构:

The hierachy

我用于地面检查的 GO:

Groundcheck

平台/地面的设置方式:Platforms

1:用于检测玩家何时停飞的触发器(在检查器中可见)

2:用于阻止玩家从 Sprite 中掉落的碰撞器(不在检查器中)

Jump() 代码:

    public void Jump ()
{
if (!(PlayerDoubleJumped) && (Grounded) || ((!(Grounded) && (!PlayerJumped)))) {
rb.velocity = new Vector2 (rb.velocity.x, JumpForce);
animator.Play ("JumpCycle");
PlayerJumped = true;
} else if (!(Grounded) && (!(PlayerDoubleJumped)) && (PlayerJumped)) {
rb.velocity = new Vector2 (rb.velocity.x, DoubleJumpForce);
animator.Play ("JumpCycle");
PlayerDoubleJumped = true;
}
}

这就是我移动播放器的方式:

this.transform.rotation = Quaternion.Euler (new Vector3 (0, 0, 0));
rb.velocity = new Vector2 (RunningSpeed, rb.velocity.y);

Physics2D 设置(默认):

Physics 2d

我正在使用 Unity 5.5.0

有人知道这里的问题是什么吗?

最佳答案

可能的修复:

  • 如果您使用的是网格碰撞器,请切换到使用盒子碰撞器。当网格碰撞器表现不佳时,这有时会奏效。

  • 使用 OnTriggerStay 而不是 OnTriggerEnter。

关于android - unity OnTriggerEnter 和 OnTriggerExit 延迟或在移动设备上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44642026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com