Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

AirdropPack, system zrzutów do Unity3D


Rekomendowane odpowiedzi

Opublikowano

Witam!

Pierwszy raz się w sumie tu udzielam, ale co mi tam. Ciekawy jestem czy odpowiedni temat, chyba tak, innych nie widzę! :)

A więc tak, od 4 lat piszę w Javie, aczkolwiek ostatnio przechodzę powoli na Unity, c#. Nadal jestem mocno początkującym w dziedzinie gier, dlatego wszelka konstruktywna krytyka mile widziana. 

 

Paczka

 

Paczka dostarczona jest jako pełny projekt wraz z modelami (z internetu, nie jestem grafikiem niestety :/// oczywiscie darmowe zeby nie bylo że publikuje płatne ;p, creditsy w paczce).

Oczywiscie same skrypty są również tutaj na MPC, bo cały projekt waży około 200MB.

 

Nie ukrywam też, że inspirowałem się zrzutem zaimplementowanym w Ruscie ;)

 

Zestaw składa się z 3 skryptów:

  • Airdrop
  • AirdropController
  • Supply

Airdrop musi być umieszczony na samolocie, nie ma tam nic do konfiguracji. (samolot później usunąć, wystarczy zapisać i umiescic w AirdropController prefab!)

AirdropController musi być umieszczony na pustym obiekcie na scenie. Jest to skrypt wywołujący co pewien czas airdrop (metody do inicjowania obiektów etc) wraz z pełną konfiguracją.

Supply musi być umieszczony na zrzucie, dużo tam nie ma oprócz usuwania spadochronu 2 sekundy po opadnięciu na ziemie. Trochę realizmu ;p

 

Pamiętajcie aby do zrzutu dodać Rigidbody i ustawić mu odpowiedni Drag bo nie będzie spadał! :)

 

Zdjęcia, czyli to co każdy lubi najbardziej!

 

Opcje konfiguracji.

e80b8649c88268a5e4b62ad619f4573c.png

 

 

Zrzut po spadnięciu na ziemię.

49212435a5ae753721fe66c8e70adad9.jpg

 

 

Zrzut

77d20491bedaa7ffe7838006481804a4.png

 

Samoloty

6e5a33a24d790984140b7ee7b5d9b5a3.png

 

Download:

     Pełny projekt:  http://www.mediafire.com/download/apr1ig59153gcoh/Airdrop_Pack.zip

     Skrypty: na dole!

 

SKAN

 

 

0a9984115490b82dc7f80352916e5262.png

 

 

 

Airdrop.cs:

 

 

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(AudioSource))]
public class Airdrop : MonoBehaviour {

    private bool dropInProgress = false;
    private bool supplied = false;
    private float time;
    private GameObject airdropController;
    private AudioSource audioSource;

    // Random values
    private Vector3 from;
    private Vector3 to;
    private float dropTime;
    private Vector3 lookDir;

    void Start()
    {
        audioSource = GetComponent<AudioSource>();
        audioSource.clip = AirdropController.AIRPLANE_ENGINE_SOUND;
        audioSource.loop = true;
        audioSource.Play();
        airdropController = GameObject.Find(
            AirdropController.AIRDROP_CONTROLLER_NAME);
    }

    void Update()
    {
        if (dropInProgress)
        {
            time += Time.deltaTime;

            transform.LookAt(-lookDir);

            transform.position = Vector3.MoveTowards(from, to, AirdropController.FLY_SPEED * time);

            if (time >= dropTime)
            {
                if (!supplied)
                {
                    Vector3 dropPosition = new Vector3(
                        transform.position.x - 25, transform.position.y, transform.position.z - 25);
                    GameObject supply = airdropController.GetComponent<AirdropController>()
                                                .InstantiateSupply(dropPosition);
                    supplied = true;
                }
            }
            if (transform.position == to)
            {
                Destroy(transform.gameObject, 3);
                dropInProgress = false;
                supplied = false;
                return;
            }
        }
    }

    public void Init()
    {
        from = AirdropController.FROM_POSITIONS[Random.Range(0, AirdropController.FROM_POSITIONS.Length)];
        to = AirdropController.TO_POSITIONS[Random.Range(0, AirdropController.FROM_POSITIONS.Length)];

        // Drop
        dropTime = AirdropController.DROP_AFTER_RANDOM_TIME[Random.Range(0,
            AirdropController.DROP_AFTER_RANDOM_TIME.Length)];

        lookDir = new Vector3(to.x, 0, to.z);
        dropInProgress = true;
    }
}
 

 

 

 

AirdropController.cs

 

 

using UnityEngine;
using System.Collections;

public class AirdropController : MonoBehaviour {

    [Header("Prefab configuration")]
    public GameObject airplanePrefab;
    public GameObject supplyPrefab;

    [Header("Configuration")]
    public string airdropControllerName;
    public Vector3[] fromPositions;
    public Vector3[] toPositions;
    public float[] dropAfterRandomTime;
    public AudioClip airplaneEngineSound;
    public float flySpeed;
    public float timeBetweenAirdrops;
    public float timeToAirdropWhenServerStart = 0;

    public static string AIRDROP_CONTROLLER_NAME;
    public static Vector3[] FROM_POSITIONS;
    public static Vector3[] TO_POSITIONS;
    public static float[] DROP_AFTER_RANDOM_TIME;
    public static AudioClip AIRPLANE_ENGINE_SOUND;
    public static float FLY_SPEED;

    void Start ()
    {
        // Will be replaced by something more efficient
        AIRDROP_CONTROLLER_NAME = airdropControllerName;
        FROM_POSITIONS = fromPositions;
        TO_POSITIONS = toPositions;
        DROP_AFTER_RANDOM_TIME = dropAfterRandomTime;
        AIRPLANE_ENGINE_SOUND = airplaneEngineSound;
        FLY_SPEED = flySpeed;

        InvokeRepeating("StartAirdrop", timeToAirdropWhenServerStart, 
            timeBetweenAirdrops);
    }

    public void StartAirdrop()
    {
        GameObject airplane = InstantiateAirplane();
        airplane.GetComponent<Airdrop>().Init();
    }

    public GameObject InstantiateAirplane()
    {
        GameObject airplaneGO = (GameObject)Instantiate(airplanePrefab, new Vector3(0, 0, 0), Quaternion.identity);
        return airplaneGO;
    }

    public GameObject InstantiateSupply(Vector3 pos)
    {
        GameObject supplyGO = (GameObject)Instantiate(supplyPrefab, pos, Quaternion.identity);
        return supplyGO;
    }
}
 

 

 

 

Supply.cs

 

 

using UnityEngine;
using System.Collections;

public class Supply : MonoBehaviour {

    public GameObject parachute;

    // Destroying parachute 2 seconds after colliding with ground
    void OnCollisionEnter(Collision other)
    {
        Destroy(parachute, 2);
    }

    // Here you can define your drops, pickup system or something else!
}
 

 

 

 

 

Jeżeli ktos potrzebowałby więcej pomocy, zapraszam na pw!

:)

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

@AdamGrzegorz

Wrzuć skan pliku + wrzuć link do pliku na nowo, ponieważ został usunięty z powodu braku skanu. Doceniamy Twoją chęć zrobienia poradnika i chwała, że są jeszcze takie osoby, ale zasady to zasady  :lenny:.

Opublikowano

@AdamGrzegorz

Wrzuć skan pliku + wrzuć link do pliku na nowo, ponieważ został usunięty z powodu braku skanu. Doceniamy Twoją chęć zrobienia poradnika i chwała, że są jeszcze takie osoby, ale zasady to zasady  :lenny:.

Jak mam to zrobić jak virustotal nie obsługuje +128 MB plików?:p

 

To wystarczy?

0a9984115490b82dc7f80352916e5262.png

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...