Potrzebne sterowanie do statku kosmicznego na Unity C#/Javascript

0

Cześć,
Mam deal.
Jestem początkującym programistą i interesuję się tworzeniem gier komputerowych. Dotychczas zrobiłem gierkę na Blenderze, ale tam nie potrzebna jest wiedza programistyczna. Obecnie pracuję nad grą na Unity. Potrzebuję skryptu sterowania statkiem kosmicznym. Mam już własny skrypt sterowania ale jest toporny i nie posiada takich elementów jak ustawienie prędkości lotu, oporów powietrza (bo pojazd startuje z ziemi jak śmigłowiec) itp. Znalazłem w sieci pełny skrypt sterowania samolotem, który można zmodyfikować. Na pewno potrzebne są funkcje zachowania prędkości lotu, z którymi sam sobie nie mogę poradzić. Jestem freelancerem więc mam niski budżet ale oferuję kaskę za napisanie takiego skryptu. Jak ktoś jest zainteresowany współpracą, to proszę o kontakt. Pozdrawiam.

0

LOL

0

W sumie sprawa jest prosta, mogę wrzucić kod. No więc, gdy wciskam UpArrow, to pojazd leci w górę przyspieszając, a po zwolnieniu klawisza leci jeszcze kawałek z rozpędu, aż w końcu się zatrzymuje. Nie wiem, dlaczego z lotem do przodu nie jest tak samo. Jak wciskam W, to leci do przodu ze stałą prędkością i po puszczeniu zatrzymuje się zupełnie. Jak skopiowałem partię kodu zawierającą formułę if(CurrentSpeed < 0) tylko zamiast CurrentSpeed wrzuciłem strafeSpeed, to pojazd robi zupełnie odwrotnie, czyli zwalnia zamiast przyspieszać i zachowywać pęd i się zatrzymuje. I wtedy wszystko stoi.

var CurrentSpeed : float = 0;
var strafeSpeed : float = 0;
var speed : float = 0.5;

function Update () {

transform.Translate(Vector3.forward * Time.deltaTime * CurrentSpeed , Space.Self);

if(CurrentSpeed < 0) {
CurrentSpeed += 0.25 * Time.deltaTime;
} else {
CurrentSpeed -= 0.25 * Time.deltaTime;
}

if(Input.GetKey(KeyCode.W)){
CurrentSpeed += Time.deltaTime;
}

if(Input.GetKey(KeyCode.S)){
CurrentSpeed -= Time.deltaTime;
}

if(Input.GetKey(KeyCode.D)){
transform.Translate(-Vector3.right * strafeSpeed * Time.deltaTime);
}

if(Input.GetKey(KeyCode.A)){
transform.Translate(-Vector3.left * strafeSpeed * Time.deltaTime);
}

if(Input.GetKey(KeyCode.UpArrow)){
this.transform.position += this.transform.forward * this.speed;
rigidbody.AddForce(transform.forward * force* Time.deltaTime);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1