x


Transferring values from one script to another script?

I have looked around but haven't found anything that helped me quite yet, just for a test I made a scene with a camera that shot a cube at a wall. What I want to test is that after a couple hits the wall should disappear/break. Here's what I had on the bullet so far, I need a way to transfer the values from this script to my wall/playerproperties script.

Bulletcollision.js:

   var damage = 5;
function OnCollisionEnter(theCollision : Collision){
 if(theCollision.gameObject.name == "Wall"){


}

Playerproperties:

var health=20;

function Update()

{

if (health <= 0)
destroy(gameObject);

}

Assistance would be great, thanks ahead of time

  • Valestrom
more ▼

asked Aug 14, 2011 at 11:16 PM

blackmethod gravatar image

blackmethod
63 88 69 71

Hi There

It's not entirely clear to me what you are trying to do, but it strikes me that a script on your wall should track its own health and do the deduction/destruction. Please post more details!

H

Aug 14, 2011 at 11:30 PM Bovine
(comments are locked)
10|3000 characters needed characters left

2 answers: sort voted first

very simple the scripts are attached to a game object so you would want to say something like

//this line is in the playerproerties script
public GameObject obj1; //drag the object with the bullet collision script on this

then you can say something like this:

obj1.GetComponent<Bulletcollision>().<YOUR VARIABLE NAME HERE> = <VALUE>;

Unfortunately I'm not incredibly familiar with javascript so this is written in C# but you should be able to convert it fairly easily.

Hope that helps :D Hans

more ▼

answered Aug 15, 2011 at 02:06 AM

HHameline gravatar image

HHameline
222 44 34 46

For completeness, js would look like:

obj : GameObject;
obj1.GetComponent.< Bulletcollision >().<var name here> = <value here>;
Aug 15, 2011 at 02:31 AM Joshua

Thanks Joshua :)

Aug 15, 2011 at 02:36 AM HHameline
(comments are locked)
10|3000 characters needed characters left
 var damage = 5;
function OnCollisionEnter(theCollision : Collision){
 if(theCollision.gameObject.name == "Wall"){

//take 5 points from health of the wall
Player.health -= damage;

}

Player.js /// Iam assuming the name of the file is Player static var health=20;

function Update()

{

if (health <= 0)
destroy(gameObject);

}

// notice the word static before health variable you can update static var across files.

more ▼

answered Aug 14, 2011 at 11:42 PM

rimawi gravatar image

rimawi
153 56 43 51

This answer is technically correct, but when some one asks how to reference other scripts and instead you tell him to use static variables - that's usually only confusing. And it won't work if he has several players.

Aug 15, 2011 at 02:32 AM Joshua

Well it doesn't answer the question title, but it does tackle the problem. It also scales better - I understand calling GetComponent() is best avoided - I'm personally a little paranoid about it so in this instance I might have something, perhaps a gun script, know about the player and squirrel a reference to the player into a bullet and then, contrary to my suggestion above, the bullet could identify it had hit the player and then do damage to it and avoid the GetComponent() call and any statics.

That said, In my own game when the player script is created in Awake() I store it in a static property - Player.Player so I can get at it from anywhere. Of course that only works well for single player but you could adapt the principal for multi-player I am sure... GetComponent() is also probably less of an issue on desktops - I'm dealing with iOS devices see!

Aug 15, 2011 at 03:21 AM Bovine
(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

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

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x4153
x594
x283
x105
x57

asked: Aug 14, 2011 at 11:16 PM

Seen: 1845 times

Last Updated: Aug 15, 2011 at 03:29 AM