объект должен пройти расстояния по одной оси 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;
}
}