2016-03-19 2 views
0

Ok, hier ist mein Problem, ich habe ein Skript, mit dem ich ein feindliches Ziel einkreisen und umkreisen kann. Das Problem ist, wenn sich mein Charakter bewegt, wenn er den Einrastknopf drückt, bewegt sich der Charakter weiter in die Richtung, in die er sich vor dem Drücken der Taste bewegt hat, unabhängig davon, ob mehr Tasten gedrückt werden, außer in die entgegengesetzte Richtung.Unity-Character bewegt sich weiter, wenn es auf Gegner geblockt wird

Dies passiert nicht, wenn ich stationär bin, wenn mein Charakter still steht und ich den Knopf am Schloss drücke funktioniert alles gut. Es ist nur, wenn ich mich bewege.

Ich bin mir nicht sicher, ob dies genug Informationen, oder was sonst könnte jemand brauchen, um besser zu verstehen, aber hier ist mein Skript:

if (GetComponent<DetectedEnemies>().locked)//checks bool to see if lockOn button was pressed 
{ 
    mainCam.SetActive(false);//turns off main cam 
    lockCam.SetActive(true);//turns on lockOn cam 

    movesetting.tarObject = GetComponent<DetectedEnemies>().Closest;//target object will be the closest enemy to player 

    this.transform.LookAt(movesetting.tarObject.transform.position);//player will look at the target object at all times 

    if (currXRot.x > maxXRot.x)//if the current x rot of this object exceeds the maxXRot it can go... 
     currXRot.x = maxXRot.x;//it gets reset 

    transform.Translate(Vector3.right * movesetting.speed * Time.deltaTime * turnInput);//orbits around the target object 
    transform.Translate(Vector3.forward * movesetting.speed * Time.deltaTime * forwardInput);//in control of moving towards and away from target 
} 

Jedwedes Hilfe sehr appreaciated wird, danken Ihnen im Voraus. Wenn Sie weitere Informationen benötigen oder etwas nicht klar ist, lassen Sie es mich wissen.

Antwort

0

Versuchen Sie, eine zweite Geschwindigkeitsvariable zu erstellen, die Sie für die Umlaufgeschwindigkeit verwenden. Dann, wenn der Spieler gesetzt ist gesperrt die erste Geschwindigkeit Variablen auf 0 und wenn der Spieler nicht gesperrt wird, um die Umlaufgeschwindigkeit Variable auf 0 Etwas ähnliches gesetzt: (ich verwende 5 als Beispiel)

if(GetComponent.<DetectedEnemies>().locked) { 

speed = 5; 
orbitSpeed = 5; 
} else { 

speed = 5; 
orbitSpeed = 0; 
} 
Verwandte Themen