0

グリッドのような動き (一度に 1 単位) で移動するトップダウン ゲームのプレイヤー キャラクターがありますが、氷 (正方形) のパッチに当たったときに、ラープの動きに切り替えて端までスライドさせたい、停止します。

現在、氷の各パッチの子として 5 つの異なるコライダーがあります。氷のコライダー自体と、氷の両側に 1 つずつ、わずかに離れた 4 つのコライダーです。アイスコライダーに衝突すると、向かっていた方向に応じて、関連付けられた距離のあるコライダーにラープする必要があります。

そのように(メインのコライダーが見えにくいですが、そこにあります): 氷

下のキーに使用したコードは次のとおりです (基本的にすべてのキーで同じです)。

else if (Input.GetKeyDown(KeyCode.DownArrow))
    {
        Vector2 movementDown = new Vector2(0, -1);
        RaycastHit2D hitDown = Physics2D.Raycast(transform.position, movementDown, 0.05f);

        if (hitDown.collider && hitDown.collider.gameObject.tag == "barrier")
        {
            Debug.Log("N/A");
        }
        else if (onIce)
        {
            player.transform.position = Vector3.Lerp(transform.position, downIce.transform.position, 100 * Time.fixedDeltaTime);
        }
        else
        {
            player.transform.position += new Vector3(movementDown.x, movementDown.y, -0.1f);
        }
    }

編集: bool 'onIce' を更新するコード:

void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.gameObject.tag == "ice") {
        onIce = true;
    }
}

void OnTriggerExit2D(Collider2D collision)
{
    if (collision.gameObject.tag == "ice")
    {
        onIce = false;
    }
}
4

1 に答える 1