Quantcast
Channel: Questions in topic: "upgrade"
Viewing all articles
Browse latest Browse all 371

Re: Upgrade Screen

$
0
0
So I fixed (and by fixed, I mean it doesn't cause errors anymore) my upgrade script shown below: using UnityEngine; using System.Collections; public class upgrade : MonoBehaviour { PlayerShooting playerShooting; void Start () { GameObject Player = GameObject.Find("Player"); playerShooting = Player.GetComponent(); } public float UpgradeWeapon() { float PassBack = playerShooting.damagePerShot += 40; return (PassBack); } } However, I tried to test it out by applying the script to the player character, but it didn't make the attacks any stronger. It references my playerShooting script, also shown below: using UnityEngine; public class PlayerShooting : MonoBehaviour { public float damagePerShot = 20; // The damage inflicted by each bullet. public float timeBetweenBullets = 0.15f; // The time between each shot. public float range = 100f; // The distance the gun can fire. public float lowPitchRange = .95f; public float highPitchRange = 1.05f; public AudioSource efxSource; public AudioClip gunClip1; public AudioClip gunClip2; public AudioClip gunClip3; public void RandomizeSfx (params AudioClip[] clips) { //Generate a random number between 0 and the length of our array of clips passed in. int randomIndex = Random.Range(0, clips.Length); //Choose a random pitch to play back our clip at between our high and low pitch ranges. float randomPitch = Random.Range(lowPitchRange, highPitchRange); //Set the pitch of the audio source to the randomly chosen pitch. efxSource.pitch = randomPitch; //Set the clip to the clip at our randomly chosen index. efxSource.clip = clips[randomIndex]; //Play the clip. efxSource.Play(); } float timer; // A timer to determine when to fire. Ray shootRay; // A ray from the gun end forwards. RaycastHit shootHit; // A raycast hit to get information about what was hit. int shootableMask; // A layer mask so the raycast only hits things on the shootable layer. ParticleSystem gunParticles; // Reference to the particle system. LineRenderer gunLine; // Reference to the line renderer. AudioSource gunAudio; // Reference to the audio source. Light gunLight; // Reference to the light component. float effectsDisplayTime = 0.2f; // The proportion of the timeBetweenBullets that the effects will display for. void Awake () { // Create a layer mask for the Shootable layer. shootableMask = LayerMask.GetMask ("Shootable"); // Set up the references. gunParticles = GetComponent (); gunLine = GetComponent (); gunAudio = GetComponent (); gunLight = GetComponent (); } void Update () { // Add the time since Update was last called to the timer. timer += Time.deltaTime; // If the Fire1 button is being press and it's time to fire... if(Input.GetButton ("Fire1") && timer >= timeBetweenBullets) { // ... shoot the gun. Shoot (); } // If the timer has exceeded the proportion of timeBetweenBullets that the effects should be displayed for... if(timer >= timeBetweenBullets * effectsDisplayTime) { // ... disable the effects. DisableEffects (); } } public void DisableEffects () { // Disable the line renderer and the light. gunLine.enabled = false; gunLight.enabled = false; } void Shoot () { // Reset the timer. timer = 0f; gunAudio.Play (); RandomizeSfx (gunClip1, gunClip2, gunClip3); // Play the gun shot audioclip. gunAudio.Play (); // Enable the light. gunLight.enabled = true; // Stop the particles from playing if they were, then start the particles. gunParticles.Stop (); gunParticles.Play (); // Enable the line renderer and set it's first position to be the end of the gun. gunLine.enabled = true; gunLine.SetPosition (0, transform.position); // Set the shootRay so that it starts at the end of the gun and points forward from the barrel. shootRay.origin = transform.position; shootRay.direction = transform.forward; // Perform the raycast against gameobjects on the shootable layer and if it hits something... if(Physics.Raycast (shootRay, out shootHit, range, shootableMask)) { // Try and find an EnemyHealth script on the gameobject hit. EnemyHealth enemyHealth = shootHit.collider.GetComponent (); // If the EnemyHealth component exist... if(enemyHealth != null) { // ... the enemy should take damage. enemyHealth.TakeDamage (damagePerShot, shootHit.point); } // Set the second position of the line renderer to the point the raycast hit. gunLine.SetPosition (1, shootHit.point); } // If the raycast didn't hit anything on the shootable layer... else { // ... set the second position of the line renderer to the fullest extent of the gun's range. gunLine.SetPosition (1, shootRay.origin + shootRay.direction * range); } } } I'm not sure what exactly i'm doing wrong here. Could anyone help me out with what I missed?

Viewing all articles
Browse latest Browse all 371

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>