- Home /
conditional gameobject spawning from collision array help please?
hello, i am building a game where the user touches the screen and swipes using the finger to pop balloons, something similar to fruit ninja swipe/cut action. i am trying to figure out how to get a three/four swipe combo done when the player pops three/four balloons with one swipe. i have a swipe prefab instantiated and constrained to the finger position when the user touches the screen and moves the finger for the swipe, and a collision script which pops the balloons whenever the instantiated swipe prefab hits a balloon, which works great. i would like to do this however - when the user swipes, and the swipe prefab pops three balloons or more -> instantiate combo prefab from the position of the last balloon which was popped when the swipe prefab collided with it. this is the code attached to the balloons:
var pop: GameObject;
var burst : GameObject;
function OnCollisionEnter2D(coll: Collision2D) {
if (coll.gameObject.tag == "burst"){
Instantiate(burst, transform.position, Quaternion.identity);
Instantiate(pop, transform.position, Quaternion.identity);
Destroy(gameObject);
}
}
i would really really appreciate if someone could help with this issue... i am not sure how to go about setting it up. thanks in advance!
Answer by robusto · Jun 16, 2014 at 04:54 AM
make a var comboCount : int and increment ++comboCount in the collision code. Right after check if comboCount > 2, if it is instantiate your combo prefab.
You need to also reset your comboCount = 0 when your combo stops. You need to decide what keeps a combo going, most games use a time frame in which you have to pop a ballon to keep it going so you need to have another var lastHitElapsedTime : float, and in the Update function, lastHitElapsedTime += Time.deltaTime. So adding this you need to also make a check to see if lastHitElapsedTime < 2 ( if 2 seconds is the window to keep a combo going) and reset it to 0 if you did pop a ballon within 2 seconds. That should get you going.