объект должен пройти расстояния по одной оси 5f и вернуться назад по этой же оси на 5f

посмотрите пожалуйста почему не работает код

using UnityEngine;

public class MoveObject: MonoBehaviour
{
    public float thrust = 1.0f;
    public Rigidbody rb;
    


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


    private void FixedUpdate()
    {

        rb.AddForce(transform.forward * thrust);
        if (transform.position.z > 5f || transform.position.z < -5f)
        {
            thrust = -thrust;
        }

    }
}

Ответы (1 шт):

Автор решения: Yaroslav

В одну сторону... в какую? transform.forward это вперёд относительно объекта, осью z там вообще пахнет?

Debug.Log(transform.forward);

[DisallowMultipleComponent]
[RequireComponent(typeof(Rigidbody))]

public class MoveObject : MonoBehaviour {
    [SerializeField] private float _speed = 1f;
    [SerializeField] private float _borderHigh = 5f;
    [SerializeField] private float _borderLow = -5f;
    private Transform _transform;
    private Rigidbody _body;
    private float _vector;

    private void Awake () {
        _transform = transform;
        _body = GetComponent<Rigidbody>();
        _vector = 1f;
    }
       
    private void FixedUpdate () {
        _body.velocity = new Vector3(_body.velocity.x, _body.velocity.y, _speed*_vector);
        if (_transform.position.z > _borderHigh)
            _vector = -1;
        else if (_transform.position.z > _borderLow)
            _vector = 1;
    }
}
→ Ссылка