グリッドのような動き (一度に 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;
}
}