Unity Objekte in eine Richtung bewegen?
wie kann man in unity Objekte zu einem anderen Objekt bewegen, ohne dass es sich trotz einer Schieflage nicht drehen muss?
(Für einen Orbit um die Erde)
2 Antworten
Verstehe ich das richtig, du willst ein Objekt um ein anderes rotieren lassen?
Da kannst du transform.RotateAround benutzen.
Ich habe ein Code Snippet dafür gefunden, mit variablem Radius:
using UnityEngine;
using System.Collections;
public class testRotate2 : MonoBehaviour {
GameObject cube;
public Transform center;
public Vector3 axis = Vector3.up;
public Vector3 desiredPosition;
public float radius = 2.0f;
public float radiusSpeed = 0.5f;
public float rotationSpeed = 80.0f;
void Start () {
cube = GameObject.FindWithTag("Cube");
center = cube.transform;
transform.position = (transform.position - center.position).normalized * radius + center.position;
radius = 2.0f;
}
void Update () {
transform.RotateAround (center.position, axis, rotationSpeed * Time.deltaTime);
desiredPosition = (transform.position - center.position).normalized * radius + center.position;
transform.position = Vector3.MoveTowards(transform.position, desiredPosition, Time.deltaTime * radiusSpeed);
}
}
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
programmieren, Unity
Vector3.Lerp(StartPos,EndPos,speed)
Woher ich das weiß:Berufserfahrung
OctoMan
12.09.2020, 10:46
@BoundfoxStudios
Jup haste Recht. Aber gehe selten davon aus, dass nur irgendjemand die Api studiert.
Ja Zeit t zwischen 0 & 1 aka 0 -100%
Der dritte Parameter ist aber nicht der Speed, lieber OctoMan. Sondern die Zahl t, die von 0 nach 1 wächst um die Lerp zu berechnen. Je schneller die wächst, umso schneller ist der Lerp, aber du kannst nicht einfach „10“ eintragen als „Speer“ da du sonst nur eine Konstante als Ergebnis erhältst.