@DVegasa

Unity | Объект движется сам по себе (2d ) что делать?

Добрый день. Недавно начал работать с Unity. Решил делать небольшой платформер.
Проблема вот в чём:
Есть персонаж, ровный квадрат, через AddForce на него горизонтально воздействует сила. Дело в том, что даже если никакая сила не воздействует (проверял через отображение в консоли movement) то квадрат сам по себе движется вправо. Движется тело по такой же ровной поверхности. Никаких углов ни у персонажа, ни у пола нету.

c7d70e3e2acd4ddaac3030d631c13b57.JPG

Скрипт передвижения:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class playerMovement : MonoBehaviour {

	public Rigidbody2D rb;
	public float speed;

	// Use this for initialization
	void Start () {
		rb = GetComponent<Rigidbody2D>();
	}
	
	// Update is called once per frame
	void FixedUpdate () { 
		float moveHorizontal = Input.GetAxis ("Horizontal");

		Vector2 movement = new Vector2 (moveHorizontal, 0);

		rb.AddForce (movement * speed);

		Debug.Log (movement);
	}
}


И вторая проблема заключается в разной скорости передвижения влево и вправо (влево медленнее, чем вправо)

Что подскажете, чтобы исправить?

====== UPDATE =======
Путём опытов, пришёл к выводу, что скрипты не виноваты (полностью отключил их, проблема осталась). Если поднимать игрока по Y вверх через Editor, то он всё равно продолжает движение вправо.
Привожу скриншот инспектора на игрока6eaf7c12a1a14f448a83a9a5b85c13a6.JPG
  • Вопрос задан
  • 2165 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
rb.AddForce (movement * speed);
Если не нажата кнопка - не применяйте силу к объекту!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@GreatRash
Вот вы запустили игру и он сразу поехал? Не верю. Вы наверное тыкнули в стрелку на клаве и он поехал. Ну дык сила прибавилась объекту, ничто её не отнимает. Естественно в другую сторону он будет медленнее ехать, потому что вы к уже существующей силе "вправо" добавляете противоположную "влево". Предположу, что если вообще зажать кнопку на клаве, то он поедет с ускорением.

Вообщет если нужна постоянная скорость, то нужно тупо translate использовать. Вона в документации почти ваш пример.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы