Я делаю игру в Unity 2D, и когда мой игрок входит в стену, он застревает и вообще не может двигаться. Вот видео:
Я пытался использовать составной коллайдер, физический материал с трением на 0.
Вот мой сценарий движения:
public class PlayerMovement : MonoBehaviour
{
Vector3 pos;
float speed = 2.0f;
private Animator animator;
void Start()
{
pos = transform.position;
animator = gameObject.GetComponent<Animator>();
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.W) && transform.position == pos)
{ // Up
animator.SetInteger("isWalking", 1);
pos += Vector3.up;
}
if (Input.GetKey(KeyCode.S) && transform.position == pos)
{ // Down
animator.SetInteger("isWalking", 2);
pos += Vector3.down;
}
if (Input.GetKey(KeyCode.D) && transform.position == pos)
{ // Right
animator.SetInteger("isWalking", 3);
pos += Vector3.right;
}
if (Input.GetKey(KeyCode.A) && transform.position == pos)
{ // Left
animator.SetInteger("isWalking", 4);
pos += Vector3.left;
}
if (Input.anyKey == false)
animator.SetInteger("isWalking", 0);
transform.position = Vector3.MoveTowards(transform.position, pos, Time.deltaTime * speed);
}
}