Когда я впервые закодировал движение игрока, все было хорошо, за исключением одного: когда он сталкивался со стенами, он вибрировал / дрожал. Поэтому я заменил transform.Translate (), который я использовал, на Rigidbody2D.Moveposition ();Оно работало завораживающе. Но теперь всякий раз, когда я двигаюсь, он вибрирует / что-то вроде телепортации, и он не двигается плавно.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Player : MonoBehaviour
{
private Rigidbody2D rigidbody2d;
float MovementX = 0;
float MovementY = 0;
public float Speed = 5f;
void Start()
{
rigidbody2d = GetComponent<Rigidbody2D>();
}
void Update()
{
if (MovementX < 0)
transform.localScale = new Vector2(-1, 1);
if (MovementX > 0)
transform.localScale = new Vector2(1, 1);
//transform.Translate(Movement);
//rigidbody2d.MovePosition(Movement);
//rigidbody2d.AddForce(Movement * Speed);
}
private void FixedUpdate()
{
MovementX = Input.GetAxis("Horizontal") * Speed * Time.deltaTime;
MovementY = Input.GetAxis("Vertical") * Speed * Time.deltaTime;
//MovementX = movementJoystick.Horizontal * Speed * Time.deltaTime;
//MovementY = movementJoystick.Vertical * Speed * Time.deltaTime;
Vector2 Movement = new Vector2(transform.position.x + MovementX, transform.position.y + MovementY);
rigidbody2d.MovePosition(Movement);
}
}
Как я уже говорил, игрок должен двигаться плавно, но это не так. Если хотите, я могу попробовать связать видео с геймплеем.
Заранее спасибо.