Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by Digital-Phantom · Mar 23, 2015 at 12:20 PM · variablebooleanchild objectgame objectconstant

Shield effect is permanent and not temporary as intended. Have I made a boolean constant?

Ok this is probably going to be harder to explain than for you guys to help me solve, so bare with me...

At certain point throughout my game the player can pick up shields and those shields last approx 30 seconds. Once the shield is picked up the player becomes invulnerable for that 30 seconds after which the shield destroys itself and the player takes damage again.

(While the player has the shield it is a child object of the player)

My problem is that my script has made the player invulnerable even if they haven't picked up the shield. Its as though the player is always carrying/using the shield even when they don't have it.

script-

 using UnityEngine;
 using System.Collections;
 
 
 public class ShipController : MonoBehaviour
 {
     public GameObject playerExplosion;
     public GameObject asteroidExplosion;
 
     public float speed;
     public float forwardSpeed;
 
     public GameObject shot;
     public Transform shotSpawn;
     public float fireRate;
     
     private float nextFire;
 
     public Transform shieldsUp;
     public bool shieldActive = false;
 
     void Update ()
     {
         shieldsUp = transform.Find("Shield");
 
         if(shieldsUp != null)
         {
             shieldActive = true;
         }
 
         if (Input.GetButton("Fire1") && Time.time > nextFire) 
         {
             nextFire = Time.time + fireRate;
             Instantiate(shot, shotSpawn.position, shotSpawn.rotation);
             GetComponent<AudioSource>().Play ();
         }
     }
     
     void FixedUpdate ()
     {
         float moveHorizontal = Input.GetAxis ("Horizontal");
         Vector3 movement = new Vector3 (moveHorizontal, 0.0f, forwardSpeed);
         GetComponent<Rigidbody>().velocity = movement * speed;
         
     }
 
     void OnTriggerEnter (Collider other) 
     {
         if(shieldActive = true && other.tag == "Asteroid02")
         {
             Instantiate(asteroidExplosion, other.transform.position, other.transform.rotation);
             Destroy(other.gameObject);
         }
 
         else
 
         if (other.tag == "Asteroid02")
         {
             Instantiate(asteroidExplosion, other.transform.position, other.transform.rotation);
             Instantiate(playerExplosion, transform.position, transform.rotation);
             Destroy(other.gameObject);
             Destroy(gameObject);
         }
     }
 }
 

I'm guessing that I've made a variable constant, but I just don't see where my mistake is. Possibly even where I have made the script check if the shield object is currently a child object (as the mechanics of checking that are not 100% clear to me)

Any help here is greatly appreciated guys

:)

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by Bonfire-Boy · Mar 23, 2015 at 01:07 PM

You're setting the shieldActive to true regardless of whether or not there's a child named "Shield", with this line...

if(shieldActive = true && other.tag == "Asteroid02") { }

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Baste · Mar 23, 2015 at 01:16 PM 0
Share

Turned this into an answer, as it's correct; when you use '=' ins$$anonymous$$d of '==', you're setting the value to true ins$$anonymous$$d of checking it.

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

23 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Shields 'always' inactive. Player object doesn't recognise if child exists(Solved) 1 Answer

Change Variable on Another Script 2 Answers

How do I access a gameobjects variables in a seperate script? 3 Answers

Getting Variable value from another object? 1 Answer

Set Objects Child to Active/Inactive(Solved) 5 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges