我在自上而下的游戏中有一个玩家角色,它以网格状运动(一次 1 个单位)移动,但是当它碰到一块冰(正方形)时,我希望它切换到 lerp 运动,滑到边缘,然后停止。
目前,我有 5 个不同的对撞机作为孩子的每块冰:冰对撞机本身,以及 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;
}
}