Monday 19 January 2015

Unity3D Make Unstable Platform




Unity3D Make Unstable Platform














THIS IS C# scrip: GOOD 4 2D GAMES AND 3D GAMES !
----------------------------------------­­­--------------------------------------­-­-­----------------


using UnityEngine;
using System.Collections;

public class UnstablePlatform : MonoBehaviour {

        //We'll need to turn off and on our renderer for this
        Renderer PlatformMesh;
     
        //How much time until we disappear?
        public float TimeToDisappear=1f;
        //How much time until we come back?
        public float TimeToComeBack=6f;
     
        //How much time until we come back?
        public float TimeToDisappearIndependentOfPlayer=3f;
        //If we want this to be appearing and disappearing independent of player contact.
        public bool PlayerIndependent = false;
     
        //It's the start of the game!
        void Start() {
                //Let's get a reference to our renderer so we can turn it on and off
                PlatformMesh = GetComponent<Renderer>();
                //If we're player independent...
        if(PlayerIndependent) {
                //We should start counting to disappear
                StartCoroutine(PlayerIndependentDisappearing());
        }
        }
     
        //This coroutine will do the blinking over time
        IEnumerator DoTheBlinking()
    {
        //Start false, wait for X time, than go true, and then false, and...
        PlatformMesh.enabled=false;
        yield return StartCoroutine(Wait(TimeToDisappear*0.1f));
        PlatformMesh.enabled=true;
        yield return StartCoroutine(Wait(TimeToDisappear*0.3f));
        PlatformMesh.enabled=false;
        yield return StartCoroutine(Wait(TimeToDisappear*0.2f));
        PlatformMesh.enabled=true;
        yield return StartCoroutine(Wait(TimeToDisappear*0.1f));
        PlatformMesh.enabled=false;
        yield return StartCoroutine(Wait(TimeToDisappear*0.05f));
        PlatformMesh.enabled=true;
        yield return StartCoroutine(Wait(TimeToDisappear*0.025f));
        PlatformMesh.enabled=false;
        yield return StartCoroutine(Wait(TimeToDisappear*0.02f));
        PlatformMesh.enabled=true;
        yield return StartCoroutine(Wait(TimeToDisappear*0.01f));
        PlatformMesh.enabled=false;
        //Now that we're finally gone, turn collider off
        gameObject.collider.enabled=false;
        //If the developer wants it to come back (TimeToComeBack bigger than 0...)
        if(TimeToComeBack>0) {
                //Let's start our ComeBack Routine
                StartCoroutine(ComeBack());
        }
    }
 
    //This one is in case you want this to go on and off constantly without player interaction
    IEnumerator PlayerIndependentDisappearing()
    {
        //It'll wait for the Time To Disappear time, than call the DoTheBlinking coroutine.
        yield return StartCoroutine(Wait(TimeToDisappearIndependentOfPlayer));
        yield return StartCoroutine(DoTheBlinking());
    }
 
    //Come back routine! Like the disappearing one but opposite!
    IEnumerator ComeBack()
    {
        //It'll wait for the Time To ComeBack time, than blink a bit.
        yield return StartCoroutine(Wait(TimeToComeBack));
        yield return StartCoroutine(Wait(TimeToDisappear*0.1f));
        PlatformMesh.enabled=true;
        yield return StartCoroutine(Wait(TimeToDisappear*0.3f));
        PlatformMesh.enabled=false;
        yield return StartCoroutine(Wait(TimeToDisappear*0.2f));
        PlatformMesh.enabled=true;
        yield return StartCoroutine(Wait(TimeToDisappear*0.1f));
        PlatformMesh.enabled=false;
        yield return StartCoroutine(Wait(TimeToDisappear*0.05f));
        PlatformMesh.enabled=true;
        //And now we enable our collider again.
        gameObject.collider.enabled=true;
        //If we're player independent...
        if(PlayerIndependent) {
                //We should start counting to disappear again.
                StartCoroutine(PlayerIndependentDisappearing());
        }
    }

        //This is a fancy wait coroutine for the others to use.
        IEnumerator Wait(float duration)
    {
        for (float timer = 0; timer < duration; timer += Time.deltaTime)
            yield return 0;
    }

        //We should blink and disappear if the player collides with us
        void OnCollisionEnter(Collision other) {
                //If we're player independent, just stop this D:
                if(PlayerIndependent) {
                return;
        }
        if(other.gameObject.tag=="Player") {
                StartCoroutine(DoTheBlinking());
        }
    }
}

----------------------------------------­----------------------------------------­-

Copyright Free Music in this video by:

Song: Virtual Riot - Energy Drink
» Download:
http://bit.ly/RebornDownload

Creative Commons License
http://creativecommons.org/licenses/b...

Artist's Links:
Virtual Riot - Energy Drink

http://www.facebook.com/virtualriotmusic
http://www.soundcloud.com/virtual-riot

0 comments:

Post a Comment