У меня есть игрок с компонентами: Rigidbody2d
и 2d box collider
, а также есть с такими же компонентами ящики. У меня почему-то игрок проходит сквозь ящики, но такого не должно быть.
Скрин с настройками компонентов игрока: http://joxi.ru/4AkvDWEFypp0M2
Скрипт передвижения игрока:
void FixedUpdate() { if (Input.GetButton("Horizontal")) MoveHorizontal(); if (Input.GetButton("Vertical")) MoveVertical(); } private void MoveHorizontal() { Vector3 direction = transform.right * Input.GetAxis("Horizontal"); if (transform.position.x + direction.x < 9 && transform.position.x + direction.x > -9) { transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime); } } private void MoveVertical() { Vector3 direction = transform.up * Input.GetAxis("Vertical"); transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime); }
Особенность: если ящик стоит на месте, то через него не получается пройти, а если ящик двигается – то игрок проходит сквозь (не сразу, но проходит)
Скрипт движения ящика:
void FixedUpdate () { position.x -= speed * Time.deltaTime; transform.position = position; }