Monday, May 01, 2017

Clone Code

//player part
void Update ()
    {
        if (Input.GetButton("Fire1") && Time.time > nextFire)
        {
            nextFire = Time.time + fireRate;
            Instantiate(shot, shotSpawn.position, shotSpawn.rotation);
            GetComponent <AudioSource> ().Play ();
            gameController.AddScore (-1);
        }

        if (Input.GetKey (KeyCode.C) && Time.time > nextFire) {
            nextFire = Time.time + fireRate;
            Instantiate(clone, shotSpawn.position, shotSpawn.rotation);
            gameController.AddScore (-100);
        }
    } 

//clone part, same script as player mostly with a few changes
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[System.Serializable]
public class Boundary
{
    public float xMin, xMax, zMin, zMax;
}

public class PlayerCloneController : MonoBehaviour {

    public float speed;
    public float tilt;
    public Boundary boundary;
    public GameObject shot;
    public Transform shotSpawn;
    public float fireRate;

    private float nextFire;
    private GameController gameController;

    void Start ()
    {
        GameObject gameControllerObject = GameObject.FindWithTag ("GameController");
        if (gameControllerObject != null) {
            gameController = gameControllerObject.GetComponent <GameController> ();
        }
        if (gameController == null) {
            Debug.Log ("Cannot find 'GameController' script");
        }
    }

    void Update ()
    {
        if (Input.GetButton("Fire1") && Time.time > nextFire)
        {
            gameController.AddScore (-1);
            nextFire = Time.time + fireRate;
            Instantiate(shot, shotSpawn.position, shotSpawn.rotation);
            GetComponent<AudioSource> ().Play ();
        }

        if (Input.GetKey (KeyCode.D)) {
            Destroy (gameObject);
        }
    }

    void FixedUpdate(){
        float moveHorizontal = Input.GetAxis ("Horizontal");
        float moveVertical = Input.GetAxis ("Vertical");

        Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
        GetComponent<Rigidbody> ().velocity = movement * speed;

        GetComponent<Rigidbody> ().position = new Vector3
            (
                Mathf.Clamp (GetComponent<Rigidbody> ().position.x, boundary.xMin, boundary.xMax),
                0.0f,
                Mathf.Clamp (GetComponent<Rigidbody> ().position.z, boundary.zMin, boundary.zMax)
            );

        GetComponent<Rigidbody> ().rotation = Quaternion.Euler (0.0f0.0f, GetComponent<Rigidbody> ().velocity.x * -tilt);
    }

}

No comments: