Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Написал код на Unity для Top Down управления, но он работает не правильно в чём может быть ошибка?

симф мяумяу Ученик (117), на голосовании 6 месяцев назад
 public class PlayerControler : MonoBehaviour 
{
public float speed;
private Rigidbody2D rb;
private Vector2 moveVelosity;

void Start()
{
rb = GetComponent();
}

void Update()
{
moveVelosity.x = Input.GetAxisRaw("Horizontal");
moveVelosity.y = Input.GetAxisRaw("Vertical");
}

void FixedUpdate()
{
rb.MovePosition(rb.velocity + moveVelosity * speed * Time.fixedDeltaTime);
}
}
Работа кода в игре(Видео)
Голосование за лучший ответ
randompeople0601 Профи (810) 7 месяцев назад
Проблема возникает из-за того, что вы используете rb.velocity вместо rb.position при перемещении игрока. Вместо этого вы должны использовать rb.position, чтобы установить новую позицию объекта.

попробуй это
public class PlayerControler : MonoBehaviour
{
public float speed;
private Rigidbody2D rb;
private Vector2 moveVelocity;

void Start()
{
rb = GetComponent<Rigidbody2D>();
}

void Update()
{
moveVelocity.x = Input.GetAxisRaw("Horizontal");
moveVelocity.y = Input.GetAxisRaw("Vertical");
}

void FixedUpdate()
{
rb.MovePosition(rb.position + moveVelocity * speed * Time.fixedDeltaTime);
}
}
симф мяумяуУченик (117) 7 месяцев назад
Огромное спасибо! Я смотрел коды из разных источников и всё напутал. Ещё раз спасибо!
Похожие вопросы