我尝试复制不可能的游戏:http://flukedude.com/theimpossiblegame/
红色正方向向右移动,当玩家看到蓝色正方形时,他应该跳跃。如果他将与广场的左侧(另一个方块“ WallCollider ”)发生碰撞,游戏就结束了。它有效,但如果玩家将跳到左上角,游戏也将结束。无法理解,为什么。
void OnCollisionEnter(Collision collision)
{
if (collision.transform.name == "WallCollider")
Debug.Log ("You lose");
}
红色和蓝色方块和WallCollider都有盒子对撞机。只有红色方块才有刚性。
我像这样移动红色:
public GameObject player;
public float speed = 5.0f;
public float jumpPower = 10.0f;
void Start ()
{
player = (GameObject)this.gameObject;
}
void Update ()
{
player.transform.position +=
player.transform.right * speed * Time.deltaTime;
}
我在二维环境中使用3d物理。所有脚本都位于红色方块(播放器)上。
蓝盒有一个盒子对撞机。但在附近我还有WallCollider(Cube),它也有一个盒子对撞机,但它的高度稍微低一点。
答案 0 :(得分:2)
首先,碰撞器具有穿透距离,因此通过跳跃左上角,玩家对撞机可以将其穿透到墙壁对撞机。尝试在编辑/项目设置/物理中减少穿透距离。
同样有助于减少固定时间步长以提高物理模拟的准确性(查找编辑/项目设置/时间)。