Showing posts with label script. Show all posts
Showing posts with label script. Show all posts

Saturday, 21 July 2018

Unity Count Down Timer with circular progressbar

Watch Video Tutorial On My Channel

Assets:



White Dotted image is here

Script:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Loading : MonoBehaviour {

public Image loading;
public Text timeText;
public int minutes;
public int sec;
int totalSeconds = 0;
int TOTAL_SECONDS = 0;
float fillamount;

void Start ()
{
timeText.text = minutes + " : " + sec;
if (minutes > 0)
totalSeconds += minutes * 60;
if (sec > 0)
totalSeconds += sec;
TOTAL_SECONDS = totalSeconds;
StartCoroutine (second ());
}

void Update ()
{
if (sec == 0 && minutes == 0) {
timeText.text = "Time's Up!";
StopCoroutine (second ());
}
}
IEnumerator second()
{
yield return new WaitForSeconds (1f);
if(sec > 0)
sec--;
if (sec == 0 && minutes != 0) {
sec = 60;
minutes--;
timeText.text = minutes + " : " + sec;
fillLoading ();
StartCoroutine (second ());
}

void fillLoading()
{
totalSeconds--;
float fill = (float)totalSeconds/TOTAL_SECONDS;
loading.fillAmount = fill;
}
}

Sunday, 4 March 2018

FPS SHOOTER (FirstPersonController)

using System;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;
using UnityStandardAssets.Utility;
using Random = UnityEngine.Random;

namespace UnityStandardAssets.Characters.FirstPerson
{
    [RequireComponent(typeof (CharacterController))]
    [RequireComponent(typeof (AudioSource))]
    public class FirstPersonController : MonoBehaviour
    {
        [SerializeField] private bool m_IsWalking;
        [SerializeField] private float m_WalkSpeed;
        [SerializeField] private float m_RunSpeed;
        [SerializeField] [Range(0f, 1f)] private float m_RunstepLenghten;
        [SerializeField] private float m_JumpSpeed;
        [SerializeField] private float m_StickToGroundForce;
        [SerializeField] private float m_GravityMultiplier;
        [SerializeField] private MouseLook m_MouseLook;
        [SerializeField] private bool m_UseFovKick;
        [SerializeField] private FOVKick m_FovKick = new FOVKick();
        [SerializeField] private bool m_UseHeadBob;
        [SerializeField] private CurveControlledBob m_HeadBob = new CurveControlledBob();
        [SerializeField] private LerpControlledBob m_JumpBob = new LerpControlledBob();
        [SerializeField] private float m_StepInterval;
        [SerializeField] private AudioClip[] m_FootstepSounds;    // an array of footstep sounds that will be randomly selected from.
        [SerializeField] private AudioClip m_JumpSound;           // the sound played when character leaves the ground.
        [SerializeField] private AudioClip m_LandSound;           // the sound played when character touches back on ground.

        float horizontal;
        float vertical;
        bool walkforward;

        private Camera m_Camera;
        private bool m_Jump;
        private float m_YRotation;
        private Vector2 m_Input;
        private Vector3 m_MoveDir = Vector3.zero;
        private CharacterController m_CharacterController;
        private CollisionFlags m_CollisionFlags;
        private bool m_PreviouslyGrounded;
        private Vector3 m_OriginalCameraPosition;
        private float m_StepCycle;
        private float m_NextStep;
        private bool m_Jumping;
        private AudioSource m_AudioSource;

        // Use this for initialization
        private void Start()
        {
            m_CharacterController = GetComponent<CharacterController>();
            m_Camera = Camera.main;
            m_OriginalCameraPosition = m_Camera.transform.localPosition;
            m_FovKick.Setup(m_Camera);
            m_HeadBob.Setup(m_Camera, m_StepInterval);
            m_StepCycle = 0f;
            m_NextStep = m_StepCycle/2f;
            m_Jumping = false;
            m_AudioSource = GetComponent<AudioSource>();
            m_MouseLook.Init(transform , m_Camera.transform);
        }


        // Update is called once per frame
        private void Update()
        {
            RotateView();
            // the jump state needs to read here to make sure it is not missed
            if (!m_Jump)
            {
                m_Jump = CrossPlatformInputManager.GetButtonDown("Jump");
            }

            if (!m_PreviouslyGrounded && m_CharacterController.isGrounded)
            {
                StartCoroutine(m_JumpBob.DoBobCycle());
                PlayLandingSound();
                m_MoveDir.y = 0f;
                m_Jumping = false;
            }
            if (!m_CharacterController.isGrounded && !m_Jumping && m_PreviouslyGrounded)
            {
                m_MoveDir.y = 0f;
            }

            m_PreviouslyGrounded = m_CharacterController.isGrounded;
        }


        private void PlayLandingSound()
        {
            m_AudioSource.clip = m_LandSound;
            m_AudioSource.Play();
            m_NextStep = m_StepCycle + .5f;
        }


        private void FixedUpdate()
        {
            float speed;
            GetInput(out speed);
            // always move along the camera forward as it is the direction that it being aimed at
            Vector3 desiredMove = transform.forward*m_Input.y + transform.right*m_Input.x;

            // get a normal for the surface that is being touched to move along it
            RaycastHit hitInfo;
            Physics.SphereCast(transform.position, m_CharacterController.radius, Vector3.down, out hitInfo,
                               m_CharacterController.height/2f, Physics.AllLayers, QueryTriggerInteraction.Ignore);
            desiredMove = Vector3.ProjectOnPlane(desiredMove, hitInfo.normal).normalized;

            m_MoveDir.x = desiredMove.x*speed;
            Camera.main.transform.Rotate(new Vector3(0.0f, m_MoveDir.x, 0.0f));
           // transform.Rotate(new Vector3(0.0f, m_MoveDir.x,0.0f));
            m_MoveDir.z = desiredMove.z*speed;


            if (m_CharacterController.isGrounded)
            {
                m_MoveDir.y = -m_StickToGroundForce;

                if (m_Jump)
                {
                    m_MoveDir.y = m_JumpSpeed;
                    PlayJumpSound();
                    m_Jump = false;
                    m_Jumping = true;
                }
            }
            else
            {
                m_MoveDir += Physics.gravity*m_GravityMultiplier*Time.fixedDeltaTime;
            }
            m_CollisionFlags = m_CharacterController.Move(m_MoveDir*Time.fixedDeltaTime);

            ProgressStepCycle(speed);
            UpdateCameraPosition(speed);

            m_MouseLook.UpdateCursorLock();
        }


        private void PlayJumpSound()
        {
            m_AudioSource.clip = m_JumpSound;
            m_AudioSource.Play();
        }


        private void ProgressStepCycle(float speed)
        {
            if (m_CharacterController.velocity.sqrMagnitude > 0 && (m_Input.x != 0 || m_Input.y != 0))
            {
                m_StepCycle += (m_CharacterController.velocity.magnitude + (speed*(m_IsWalking ? 1f : m_RunstepLenghten)))*
                             Time.fixedDeltaTime;
            }

            if (!(m_StepCycle > m_NextStep))
            {
                return;
            }

            m_NextStep = m_StepCycle + m_StepInterval;

            PlayFootStepAudio();
        }


        private void PlayFootStepAudio()
        {
            if (!m_CharacterController.isGrounded)
            {
                return;
            }
            // pick & play a random footstep sound from the array,
            // excluding sound at index 0
            int n = Random.Range(1, m_FootstepSounds.Length);
            m_AudioSource.clip = m_FootstepSounds[n];
            m_AudioSource.PlayOneShot(m_AudioSource.clip);
            // move picked sound to index 0 so it's not picked next time
            m_FootstepSounds[n] = m_FootstepSounds[0];
            m_FootstepSounds[0] = m_AudioSource.clip;
        }


        private void UpdateCameraPosition(float speed)
        {
            Vector3 newCameraPosition;
            if (!m_UseHeadBob)
            {
                return;
            }
            if (m_CharacterController.velocity.magnitude > 0 && m_CharacterController.isGrounded)
            {
                m_Camera.transform.localPosition =
                    m_HeadBob.DoHeadBob(m_CharacterController.velocity.magnitude +
                                      (speed*(m_IsWalking ? 1f : m_RunstepLenghten)));
                newCameraPosition = m_Camera.transform.localPosition;
                newCameraPosition.y = m_Camera.transform.localPosition.y - m_JumpBob.Offset();
            }
            else
            {
                newCameraPosition = m_Camera.transform.localPosition;
                newCameraPosition.y = m_OriginalCameraPosition.y - m_JumpBob.Offset();
            }
            m_Camera.transform.localPosition = newCameraPosition;
        }


        private void GetInput(out float speed)
        {
           

            horizontal = CrossPlatformInputManager.GetAxis("Horizontal");
            vertical = CrossPlatformInputManager.GetAxis("Vertical");

            bool waswalking = m_IsWalking;

#if !MOBILE_INPUT
            // On standalone builds, walk/run speed is modified by a key press.
            // keep track of whether or not the character is walking or running
            m_IsWalking = !Input.GetKey(KeyCode.LeftShift);
#endif
            // set the desired speed to be walking or running
            speed = m_IsWalking ? m_WalkSpeed : m_RunSpeed;
            m_Input = new Vector2(horizontal, vertical);

            // normalize input if it exceeds 1 in combined length:
            if (m_Input.sqrMagnitude > 1)
            {
                m_Input.Normalize();
            }

            // handle speed change to give an fov kick
            // only if the player is going to a run, is running and the fovkick is to be used
            if (m_IsWalking != waswalking && m_UseFovKick && m_CharacterController.velocity.sqrMagnitude > 0)
            {
                StopAllCoroutines();
                StartCoroutine(!m_IsWalking ? m_FovKick.FOVKickUp() : m_FovKick.FOVKickDown());
            }
        }


        private void RotateView()
        {
            m_MouseLook.LookRotation (transform, m_Camera.transform);
        }


        private void OnControllerColliderHit(ControllerColliderHit hit)
        {
            Rigidbody body = hit.collider.attachedRigidbody;
            //dont move the rigidbody if the character is on top of it
            if (m_CollisionFlags == CollisionFlags.Below)
            {
                return;
            }

            if (body == null || body.isKinematic)
            {
                return;
            }
            body.AddForceAtPosition(m_CharacterController.velocity*0.1f, hit.point, ForceMode.Impulse);
        }

        public void walkForward()
        {
            vertical = 1f;
        }
        public void walkForwardUp()
        {
            vertical = 0f;
        }
        public void walkBackward()
        {
            vertical = -1f;
        }
    }
}

fps shooter (PlayerScript)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityStandardAssets.CrossPlatformInput;

public class PlayerScript : MonoBehaviour
{
    public Animator Zombieanim;
    public float health = 100f;
    public Slider healthbar;
    public GameObject GameOverScreen;

    public float speed = 5.0f;
    private float rot = 0.0f;
    //public GameObject zombie;
    // Use this for initialization
    void Start () {
      
    }
  
    // Update is called once per frame
    void Update () {
       // CrossPlatformInputManager.GetAxis("Vertical");
    
    }
    void OnTriggerEnter(Collider col)
    {
        if (col.tag == "Enemy"&& !col.GetComponent<Enemy_AI>().isDead) {
            health = health - 0.1f;
            Zombieanim.SetBool ("attack",true);
        }
    }

    void OnTriggerStay(Collider col)
    {
        if (col.tag == "Enemy"&& !col.GetComponent<Enemy_AI>().isDead) {
            health = health - 0.1f;
            healthbar.value = health;

            if (health < 0f )
            {
                print ("you died");
                GameOverScreen.SetActive(true);
            }
        }
    }

    void OnTriggerExit(Collider col)
    {
        if (col.tag == "Enemy") {
            Zombieanim.SetBool ("attack",false);
        }
    }
 
}

FPS SHOOTER (Raycast Shoot Script)

using UnityEngine;
using System.Collections;

public class RaycastShootComplete : MonoBehaviour {

    public int gunDamage = 1;                                          
    public float fireRate = 0.25f;                                   
    public float weaponRange = 50f;                                    
    public float hitForce = 100f;                                     
    public Transform gunEnd;                                           
    public GameObject Particle;

    public GameObject zombie;
    public Animator zombieAnimator;
    public EnemyGenerator enemyGenerator;

    private Camera fpsCam;                                             
    private WaitForSeconds shotDuration = new WaitForSeconds(0.07f);   
    private AudioSource gunAudio;                                      
    private LineRenderer laserLine;                                    
    private float nextFire;                                            

    private Animator anim;
    void Start () 
    {
        anim = GetComponent<Animator> ();
        // Get and store a reference to our LineRenderer component
        laserLine = GetComponent<LineRenderer>();

        // Get and store a reference to our AudioSource component
        gunAudio = GetComponent<AudioSource>();

        // Get and store a reference to our Camera by searching this GameObject and its parents
        fpsCam = GetComponentInParent<Camera>();
    }



    private IEnumerator ShotEffect()
    {
//        Gun.getInstance.PlayAnim ();

    //    this.gameObject.GetComponentInParent<Rigidbody>() .AddForce (new Vector3 (-50f, 0, 0), ForceMode.Impulse);
        GameObject particle = Instantiate (Particle, gunEnd.transform.position, Particle.transform.rotation);
        Destroy (particle, 0.5f);
        // Play the shooting sound effect
        gunAudio.Play ();

        // Turn on our line renderer
        //laserLine.enabled = true;

        //Wait for .07 seconds
        yield return shotDuration;

        // Deactivate our line renderer after waiting
        laserLine.enabled = false;
    }

    public void Fire()
    {
        if ( Time.time > nextFire )
        {//Input.GetButtonDown("Fire1")&& Time.time > nextFire
            // Update the time when our player can fire next
            nextFire = Time.time + fireRate;
            anim.SetTrigger("Shooting");

            // Start our ShotEffect coroutine to turn our laser line on and off
            StartCoroutine(ShotEffect());

            // Create a vector at the center of our camera's viewport
            Vector3 rayOrigin = fpsCam.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, 0.0f));

            // Declare a raycast hit to store information about what our raycast has hit
            RaycastHit hit;

            // Set the start position for our visual effect for our laser to the position of gunEnd
            laserLine.SetPosition(0, gunEnd.position);

            // Check if our raycast has hit anything
            if (Physics.Raycast(rayOrigin, fpsCam.transform.forward, out hit, weaponRange))
            {
                // Set the end position for our laser line 
                laserLine.SetPosition(1, hit.point);

                // Check if the object we hit has a rigidbody attached
                if (hit.rigidbody != null)
                {
                    if (hit.collider.tag == "Enemy")
                    {
                        zombieAnimator = hit.transform.gameObject.GetComponent<Animator>();
                        zombieAnimator.SetTrigger("Death");
                        zombie = hit.transform.gameObject;
                        zombie.GetComponent<Enemy_AI>().isDead = true;
                        enemyGenerator.SpawnZombie();
                    }
                    // Add force to the rigidbody we hit, in the direction from which it was hit
                    hit.rigidbody.AddForce(-hit.normal * hitForce);
                }
            }
            else
            {
               // If we did not hit anything, set the end of the line to a position directly in front of the camera at the distance of weaponRange
                laserLine.SetPosition(1, rayOrigin + (fpsCam.transform.forward * weaponRange));
            }
        }
    }
}

Monday, 26 February 2018

Friday, 23 February 2018

Random tiles Generation in Unity 2d game at runtime

 Watch Video on youtube

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TilesGenerator : MonoBehaviour
{
    private Camera mainCam;
    public GameObject Player;
    public GameObject[] Tiles;
    float spawnY;
    // Use this for initialization
    void Start () {
        mainCam = Camera.main;
        spawnY = mainCam.transform.position.y + 3.0f;
    }
   
    // Update is called once per frame
    void Update ()
    {
        if (mainCam.transform.position.y < Player.transform.position.y)
        {
            Vector3 targetPos = new Vector3
                (
                    mainCam.transform.position.x,
                    Player.transform.position.y,
                    mainCam.transform.position.z
                );

           mainCam.transform.position = Vector3.Lerp
                (
                    mainCam.transform.position,
                    targetPos,
                    0.5f
                );
        } //endif

        if (mainCam.transform.position.y > spawnY)
        {
            spawnY += Random.Range(3,4.5f);
            float spawnX = Random.Range(-5f,5f);
            SpawnTile(new Vector3(spawnX, spawnY));
        }
    }

    void SpawnTile(Vector3 pos)
    {
        pos.z = -0.99f;
        int RandomTile = Random.Range(0, Tiles.Length - 1);
        Instantiate(Tiles[RandomTile],pos,Tiles[RandomTile].transform.rotation);
    }
}


Unity Move Game Object With Finger swipe

Watch Video Tutorial On Youtube

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Ball : MonoBehaviour
{
 private Rigidbody2D ball;
    public float BallSpeed;
    public float turnSpeen = 1;
 public float smoothTime;

    public GameObject Lose;
 Vector3 vel;
 // Use this for initialization
 void Start () {
        Lose.SetActive(false);

        ball = GetComponent<Rigidbody2D> ();
 }
 
 
 void FixedUpdate()
    {// 
        ball.velocity = new Vector2 (0, 1*BallSpeed);

  Vector3 pos =  Camera.main.ScreenToWorldPoint(Input.mousePosition);

        transform.position = Vector3.SmoothDamp (
                transform.position,
                new Vector3(pos.x, transform.position.y, transform.position.z),
                ref vel, 
                smoothTime
                );

  
 }

    void OnCollisionEnter2D(Collision2D col)
    {
        Lose.SetActive(true);
        print(col.gameObject.name);
    }
}