using System;
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityStandardAssets.Characters.ThirdPerson;
public class Multiple_objects : MonoBehaviour {
public GameObject prefab;
public GameObject[] gos;
public int NumberOfObjects;
private ThirdPersonCharacter[] thirdPersonCharacter;
private Animator[] _animator;
private int count = 0;
private List<float> floats = new List<float>();
public float smooth = 1f;
private Vector3 targetAngles;
void Awake()
{
Vector3 v3 = prefab.transform.position;
_animator = new Animator[NumberOfObjects];
gos = new GameObject[NumberOfObjects];
for(int i = 0; i < gos.Length; i++)
{
count = count + 2;
GameObject clone = (GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity);
gos [i] = clone;
gos [i].transform.position = new Vector3 (v3.x - count, v3.y, v3.z);
_animator [i] = gos[i].GetComponent<Animator>();
float randomspeed = 0f;
// Keep repeating this until we find an unique randomspeed.
while(randomspeed == 0f || floats.Contains(randomspeed))
{
randomspeed = UnityEngine.Random.Range(1.0f, 15.0f);
}
floats.Add (randomspeed);
//float vertInput = 1.0f;
_animator [i].SetFloat ("Speed", randomspeed);
if (randomspeed != 0.0f)
_animator[i].speed = randomspeed;
else
_animator [i].speed = 1.0f;
}
}
// Use this for initialization
void Start() {
}
// Update is called once per frame
void Update() {
if(Input.GetKeyDown(KeyCode.S)) // some condition to rotate 180
targetAngles = gos[5].transform.eulerAngles + 180f * Vector3.up; // what the new angles should be
transform.eulerAngles = Vector3.Lerp(gos[5].transform.eulerAngles, targetAngles, smooth * Time.deltaTime); // lerp to new angles
}
}
In der Hierarchie ich habe zwei ThirdPersoncontroller: ThirdPersonController und ThirdPersonController (1)Wie kann ich einen Charakter machen, der sich beim Gehen um 180 Grad dreht?
ich das Skript auf dem ThirdPersonController setzen und das Fertig ist der ThirdPersonController (1), dann ist es mehr 15 ThirdPersonControllers klonen.
Dann läuft jeder der geklonten 15 Spieler in einer anderen Geschwindigkeit. Nun in der Update-Funktion, wenn ich auf die S-Taste drücke, dreht sich der ThirdPersonController um 180 Grad und dann drehen sich alle geklonten 15 Spieler ebenfalls um 180 Grad und laufen weiter in diese Richtung.
Was ich tun möchte ist, wenn einer der geklonten Spieler in Z-Position 180 Grad nur diesen Spieler drehen und schalten 180 Grad für eine Sekunde oder zwei gehen auf Platz drehen dann weiter in die gedrehte Richtung.
Also in der Update-Funktion verwende ich jetzt die S-Taste als Bedingung, aber es dreht sich der ThirdPersonController und alle Klone drehen sich nach ihm und gehen in die gedrehte Richtung.
Ich habe versucht, gos [0] .transform auch gos [5] .transform zu verwenden, aber es wird nicht nur der fünfte Klon gedreht, sondern alle um 180 Grad gedreht.
Und die Bedingung habe ich versucht, wenn (gos [0] .transform.position.z == 108.9377f) oder wenn (gos [0] .transform.position.z == 100), aber es wird nie zu bekommen In der nächsten Zeile habe ich einen Breakpoint benutzt.
ich so etwas wie dies in Ihrem Update zu tun, nur stumbl: ed auf deine nächste Frage: http://stackoverflow.com/questions/38681737/how-can-i-make-my-waypoints-to-work wo du meine Antwort zu verwenden scheint. Könnten Sie diese Frage bitte als beantwortet markieren? – spatbord