public Rigidbody projectile;
public Transform startBulletPosition;
public float speed;
public float rotationSpeed;
public Camera camera;
Vector3 startingDirection;
void Start() {
startingDirection = startBulletPosition.transform.forward;
}
void Update() {
if (Input.GetButtonDown("Fire1")) {
RaycastHit hit;
Vector3 targetDirection;
if (Physics.Raycast(Camera.main.transform.position, camera.transform.forward, out hit)){
targetDirection = hit.transform.position - startBulletPosition.position;
} else {
targetDirection = startingDirection;
}
Vector3 newDirection = Vector3.RotateTowards(startBulletPosition.transform.forward, targetDirection, rotationSpeed * Time.deltaTime, 0.0f);
startBulletPosition.transform.forward = newDirection;
Rigidbody clone;
clone = Instantiate(projectile, startBulletPosition.position, startBulletPosition.rotation) as Rigidbody;
clone.velocity = targetDirection * speed;
}
}
ich eine Raycast von der Kameraposition tun würde, um zu sehen, was Sie und dann die Waffe zu dieser Richtung drehen treffen können. Wie in meinem Beispielcode. Die Waffe zeigt genau auf den Mittelpunkt der Kamera, auf den Raycast deiner Kamera trifft.
Auch Sie können die maximale Umdrehungsgeschwindigkeit von diesem öffentlichen Schwimmer steuern. Dies wird für eine schöne Waffenbewegung sorgen und nicht nur für spontane Sprünge.
Hier sind die Doku Links von dem, was ich in diesem Code-Schnipsel verwendet: https://docs.unity3d.com/ScriptReference/RaycastHit.html https://docs.unity3d.com/ScriptReference/Vector3.RotateTowards.html
Wenn die Raycast Misses, die gespeicherte ursprüngliche Richtung der Waffe verwendet werden. (Angenommen, startBulletPosition ist die Transformation der Waffe ...)
Wenn Sie möchten, können Sie den Physics.Raycast-Aufruf den maxDistance-Parameter hinzufügen, um die Entfernung zu begrenzen, auf der dieses Verhalten aktiv ist.
Da Sie Ihre Kugel nicht in der Mitte spawnen, können Sie ** Raycast ** versuchen, um zu sehen, ob ein Objekt vor Ihnen liegt. Wenn ja, entferne den ** BulletSpawn ** Punkt und das ** Objekt davor **. Berechnen Sie den Winkel für das Geschoss, um das Zentrum zu treffen. Benutze es in deiner ** Verwandlung ** – Thalthanas
Warst du schon einmal in einer Schießstätte? Ich würde dieses Verhalten völlig erwarten, wenn ich gezwungen wäre, meine Waffe so zu halten (oder wenn sie exzentrisch auf etwas montiert ist). – Fildor