- Home /
Using Transform on instantiated objects
I have a prefab of a "tile" object. I've got code working to instantiate a series of these in a 10 x 10 grid. All of this works fine. When I hit play, it builds the grid as expected.
Before I was using Instantiate(), I'd written some code to rotate the tile by 90 degrees when clicked on. I assumed that when the objects were instantiated, that if I clicked on, for instance, the 2nd object on the far left from the bottom, that only that instance would get the Input.GetMouseButtonDown. However, nothing seems to happen when I click on any of the instances. What am I missing here? (Probably something basic, I am sure :/)
Here is the code in my script:
var tile : Transform;
function Update () { if(Input.GetMouseButtonDown(0)) { transform.Rotate(0, 0, 90); } }
function Awake() { for (var y = 0; y < 10; y++) { for (var x = 0; x < 10; x++) { var tile = Instantiate(tile, Vector3 (x*25, y*25, 0), Quaternion.identity); } } }
Any help y'all could provide would be appreciated.
--Gray
Does your tile objects even have a script? What's in this script if there is one? Otherwise this script seems to be attached to something else so transform.Rotate will rotate that object. You need a second script with something like what Lab013 said.
Ah, ok. Sorry, this is all pretty new to me.
Once I broke the "tile" code into it's own script, that script is being called when I click on the instantiated tile objects.
However, now if I click on any of them, it runs the rotate bit for all of them. Perhaps I am not understanding how clones work correctly. It seems to me that they should all be stand-alone objects and clicking on one only calls the script in that one particular clone, not all of them.
--Gray
And some more playing, and trying the On$$anonymous$$ouseDown() suggested below works the way I would expect.
Since it seems On$$anonymous$$ouseDown() is not supported for iPhone, eventually I'll need to figure out a way to do the same thing on that device.
Thanks so much!
--Gray
Answer by Lab013 · Mar 17, 2011 at 02:03 AM
Try replacing that with
function OnMouseDown () {
transform.Rotate(0,0,90);
}
Your answer
