Menu
CoddyTech

Kanonenreichweite

Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 66 von 71.

An einem Ende eines Schießstands steht eine Kanone, und drei Ziele gleiten in unterschiedlichen Entfernungen seitlich über den Stand. Du neigst den Lauf nach oben und unten, um die jeweilige Entfernung zu erreichen, und timst jeden Schuss so, dass ein Ziel die Schusslinie kreuzt. Ein Ball, der ein Ziel trifft, schaltet es aus und wird verbraucht; alles andere, was mit einem Ziel zusammenstößt, lässt es unbehelligt. Die Ziele sind kinematische Körper, sodass Treffer sie niemals wegstoßen, und die Kanone hat fünf Bälle.

Schreibe zwei Skripte: Cannon am Lauf und Target an jedem Ziel.

challenge icon

Aufgabe

Schwer

Schreibe die Kanone: Richte sie aus und feuere dann fünf Kugeln ab.

  1. Füge in Update() Input.GetAxisRaw("Vertical") * turnSpeed * Time.deltaTime zu angle hinzu, begrenze den Wert auf 10 bis 60 und setze transform.rotation = Quaternion.Euler(-angle, 0f, 0f);.
  2. Drücke die Leertaste, solange balls > 0 gilt, erzeuge ballPrefab bei transform.position + transform.forward und wende AddForce(transform.forward * power, ForceMode.Impulse) an.
  3. Ziehe 1 von balls ab und gib "Balls left: " + balls aus.

Drücke „Spielen“ und feuere. Drücke dann „Prüfen“.

Probier es selbst

using UnityEngine;

public class Cannon : MonoBehaviour
{
    [SerializeField] private Rigidbody ballPrefab;
    [SerializeField] private float angle = 30f;
    [SerializeField] private float turnSpeed = 40f;
    [SerializeField] private float power = 30f;
    [SerializeField] private int balls = 5;

    void Update()
    {
        // Mit den Pfeiltasten nach oben und unten zielen, mit Space feuern
    }
}

Alle Lektionen in Physik und Gameplay

Übe selbstständig: Unity-Playground