Menu
CoddyTech

Zasięg działa

Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 66 z 71.

Armata stoi na jednym końcu strzelnicy, a trzy cele przesuwają się z boku na bok w różnych odległościach. Unosisz i opuszczasz lufę, aby dosięgnąć każdej odległości, i oddajesz strzał w chwili, gdy cel przecina linię strzału. Kula, która trafi w cel, strąca go i zostaje zużyta; wszystko inne, co uderzy w cel, pozostawia go bez zmian. Cele są ciałami kinematycznymi, więc trafienia nigdy ich nie popychają, a armata mieści pięć kul.

Napisz dwa skrypty: Cannon dla lufy i Target dla każdego celu.

challenge icon

Wyzwanie

Trudny

Napisz kod działa armaty: wyceluj nią, a następnie wystrzel pięć kul.

  1. W Update() dodaj Input.GetAxisRaw("Vertical") * turnSpeed * Time.deltaTime do angle, ogranicz jego wartość do zakresu od 10 do 60 i ustaw transform.rotation = Quaternion.Euler(-angle, 0f, 0f);.
  2. Po naciśnięciu klawisza Space, gdy balls > 0, utwórz obiekt ballPrefab w miejscu transform.position + transform.forward i wywołaj AddForce(transform.forward * power, ForceMode.Impulse).
  3. Odejmij 1 od balls i wyświetl w logu "Balls left: " + balls.

Naciśnij „Graj” i strzel. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

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()
    {
        // Celuj strzałkami w górę i w dół, strzelaj klawiszem Space
    }
}

Wszystkie lekcje w sekcji Fizyka i rozgrywka

Poćwicz samodzielnie: Edytor online Unity