Итак, я новичок в Unity и работаю над 2D-игрой.Здесь у меня только фон, лодка и остров.Проблема в том, что лодка не должна идти под островом.
Я провел небольшое исследование и обнаружил, что у меня должны быть коллайдеры, поэтому я знаю, что у моей лодки есть коробочный коллайдер 2d и твердое тело 2d, а мойостров полигон коллайдер 2d.Проблема в том, что всякий раз, когда я пытаюсь пройти через остров, лодка попадает в странный угол.
РЕДАКТИРОВАТЬ: Извините, пока нет видео, но здесь полная последовательность: 
Это скрипт для движения моих лодок, если вам это нужно:
public float moveSpeed;
private Animator anim;
private bool playerMovement;
private Vector2 lastMove;
// Start is called before the first frame update
void Start()
{
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
playerMovement = false;
if (Input.GetAxisRaw("Horizontal") > 0.5f || Input.GetAxisRaw("Horizontal") < -0.5f) {
transform.Translate(new Vector3(Input.GetAxisRaw("Horizontal") * moveSpeed * Time.deltaTime,0f,0f));
playerMovement = true;
lastMove = new Vector2(Input.GetAxisRaw("Horizontal"), 0f);
}
if (Input.GetAxisRaw("Vertical") > 0.5f || Input.GetAxisRaw("Vertical") < -0.5f)
{
transform.Translate(new Vector3(0f, Input.GetAxisRaw("Vertical") * moveSpeed * Time.deltaTime, 0f));
playerMovement = true;
lastMove = new Vector2(0f, Input.GetAxisRaw("Vertical"));
}
anim.SetFloat("MoveX", Input.GetAxisRaw("Horizontal"));
anim.SetFloat("MoveY", Input.GetAxisRaw("Vertical"));
anim.SetBool("PlayerMoving", playerMovement);
anim.SetFloat("LastMoveX", lastMove.x);
anim.SetFloat("LastMoveY", lastMove.y);
}
Аниматор - 