У меня есть облако, к которому прикреплен полигональный коллайдер 2d. Кроме того, у меня есть плеер, к которому прикреплен бокс-коллайдер 2d. Когда игрок приземляется на облако, в какой-то момент во время движения его что-то останавливает. Он оживляет, но не двигается.
Ниже изображение моих коллайдеров:
Когда я запускаю игру, он двигается влево и вправо. Поэтому я решил, что это не проблема кода. В какой-то момент он застрял в указанном выше положении и не может двигаться вправо, но может двигаться влево. Полагаю, многоугольный коллайдер мешает ему двигаться. Когда я возвращаюсь, он идет, и когда он достигает указанного выше положения, он не может двигаться вперед.
Есть ли обходной путь для этого?
Ниже мой код:
public class Player : MonoBehaviour
{
public float speed = 7f;
public float maxVelocity = 8f;
private Rigidbody2D rb;
private Animator anim;
void Awake()
{
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void FixedUpdate()
{
MovePlayerUsingKeyboard();
}
public void MovePlayerUsingKeyboard()
{
float forceX = 0f;
float velocity = Mathf.Abs(rb.velocity.x);
Debug.Log("Player Velocity : " + velocity);
float direction = Input.GetAxis("Horizontal");
if (direction < 0)
{
if (maxVelocity > velocity)
{
anim.SetBool("Walk", true);
forceX = -speed;
}
//Changing the direction the player faces
Vector3 temp = transform.localScale;
temp.x = -1.3f;
transform.localScale = temp;
}
else if (direction > 0)
{
if (maxVelocity > velocity)
{
anim.SetBool("Walk", true);
forceX = speed;
}
Vector3 temp = transform.localScale;
temp.x = 1.3f;
transform.localScale = temp;
}
else
{
anim.SetBool("Walk", false);
}
rb.AddForce(new Vector2(forceX, 0));
}
}