繁体   English   中英

Unity2D 平铺物理

[英]Unity2D Tile Physics

我有一些瓷砖,玩家可以通过从下方用头敲击它们来导航和互动。 基本上,当他们跳跃时,他们可以撞到一块瓷砖,那块瓷砖将 go 上升一点,然后回到最初的 position。

由于瓷砖没有 RigidBody2D 因为它们需要悬浮在空气中,所以我对瓷砖上下移动采取了以下方法:

当前功能

瓷砖.cs

检测与玩家头部的碰撞

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.gameObject.tag == "Player Head")
    {
        collidedPlayer = true;

        Vector2 upperPosition = new Vector2(transform.position.x, transform.position.y + .40f);
        StartCoroutine(MovingBlock(0.35f, transform.position, upperPosition));

        isLethal = false;
    }

}

移动瓷砖

IEnumerator MovingBlock(float time, Vector2 startpos, Vector2 endpos)
{
    float elapsedTime = 0;

    while (elapsedTime < time)
    {
        transform.position = Vector2.Lerp(startpos, endpos, (elapsedTime / time));
        elapsedTime += Time.deltaTime;
        isLethal = true;

        yield return null;
    }

    elapsedTime = 0f;

    while (elapsedTime < time)
    {
        transform.position = Vector2.Lerp(endpos, startpos, (elapsedTime / time));
        elapsedTime += Time.deltaTime;
        isLethal = false;

        yield return null;
    }

    isLethal = false;
}

问题

在某些情况下,多个图块相互堆叠,当玩家跳跃并击中一个图块时,该图块也必须击中其顶部的图块,依此类推,最终其他图块在顶部。

  • 我已经尝试检测顶部的瓷砖并最终为其触发协程,但它似乎没有检测到碰撞:

第 8 层是 Tile 层 - 我正在检查 isLethal 因为我现在是下面的瓷砖跳跃的时候

 private void OnCollisionEnter2D(Collision2D collision)
{
    // print("Layer: " + collision.gameObject.layer);
    // print("Name: " + collision.gameObject.name);
    // print("Is lethal: " + isLethal);

    if (collision.gameObject.layer == 8 && isLethal)
    {
        print("tile to tile");
        Vector2 upperPosition = new Vector2(collision.transform.position.x, collision.transform.position.y + .40f);
        StartCoroutine(MovingBlock(0.35f, collision.transform.position, upperPosition));
    }
}

我似乎无法弄清楚这一点,我什至尝试添加 RigidBody 并且没有 Gravity Scale,但这有问题。 我愿意接受任何形式的修复,甚至是不同的逻辑。

您是在构建关卡还是随机生成关卡? 如果你正在建造它们,你应该能够为每个你想要受到影响的瓷砖制作一个更长的碰撞器,直到最低可击打瓷砖。 如果您是随机生成的,可以尝试从每个图块发送光线投射,检查其他可命中图块,并在命中发生时在它们之间发送 function 调用以启动移动块协程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM