Jestem świeżakiem, jeśli chodzi o C# i Unity. Szukałem na wielu forumach (głównie zagranicznych) i prawdopodobnie gdzieś widziałem rozwiązanie, ale pewnie nie zrozumiałem.
Mój problem polega na tym, że obiekt sferyczny ma poruszać się automatycznie do przodu ze stałą prędkością (obracając się) i tylko z ruchem horyzontalnym sterowanym przez gracza (lewo/prawo). Obiekty na drodze mogą go spowalniać, ale po chwili ma wracać do wskazanej przeze mnie predkości.
Wyskrobałem coś takiego i obiekt rzeczywiście się porusza lewo/prawo (udaje mi się ustawiać szybkość poruszania na boki jaką chcę) i porusza się sam z siebie do przodu, ale dość powoli. Chciałbym, aby poruszał się o wiele szybciej, ale nie wiem za bardzo, jak to zrobić, ponieważ jak kombinuję ze speedem, czy forwardspeed to albo porusza się z taką samą prędkością do przodu jak zazwyczaj (od którejś "wartości" jest jakby ta sama maksymalna), albo prawie w ogóle.
Mój kod wygląda aktualnie tak:
- Kod: Zaznacz wszystko
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SphereController : MonoBehaviour
{
[Header("Control Settings")]
[SerializeField]
public float speed = 1f;
private Rigidbody rb;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody>();
}
// Update is called once per frame
void FixedUpdate()
{
float Hdirection = Input.GetAxis("Horizontal");
float forwardspeed = 1;
{
rb.AddTorque(new Vector3(forwardspeed, 0, -Hdirection) * Time.deltaTime * speed);
}
{
rb.AddTorque(new Vector3(forwardspeed, 0, -Hdirection * speed) * Time.deltaTime);
}
}
}
Czy ktoś mógłby podpowiedzieć, co muszę zrobić i gdzie, żeby móc tą prędkość do przodu przyspieszać tak jak chcę?
Z góry dziękuję za pomoc.
Jeżeli jest podobny wątek, ale go nie zauważyłem, to przepraszam za śmiecenie.