- Home /
3 spawn positions but one is ignored and i dont know why
im trying to make a game where there are 3 spawn positions for the player(like lets say subway surfers)(the player moves only on the x axis while the platform goes behind him),and for his movement he is teleporting so i want to destroy the object in game and then spawn him on one of the spawn places and thats how the game goes basicly..but when i want him to go from the edge position to the middle it wont work,it goes straight to the second edge and i got no idea why..like this: X . X it seems correct for me but i got no idea why doesnt it work :/.. thanks alot :) code: using UnityEngine; using System.Collections;
public class charTeleport2 : MonoBehaviour {
//Animator anim = new Animator();
public GameObject spawnLeft;
public GameObject spawnCentre;
public GameObject spawnRight;
public static float speed=5f;
public GameObject prefab;
private GameObject player;
int counter=0;
void Start () {
player=Instantiate(prefab,new Vector3(spawnCentre.transform.position.x,prefab.transform.position.y,prefab.transform.position.z),Quaternion.identity) as GameObject;
}
// Update is called once per frame
void Update () {
counter++;
if(counter==2)
{
counter=0;
if(Input.GetKeyDown(KeyCode.D))
{
if(prefab.transform.position.x==spawnLeft.transform.position.x)
{
Destroy(player);
player=Instantiate(prefab,new Vector3(spawnCentre.transform.position.x,prefab.transform.position.y,prefab.transform.position.z),Quaternion.identity) as GameObject;
}
else if(prefab.transform.position.x==spawnCentre.transform.position.x)
{Destroy(player);
player=Instantiate(prefab,new Vector3(spawnRight.transform.position.x,prefab.transform.position.y,prefab.transform.position.z),Quaternion.identity) as GameObject;
}
}
if (Input.GetKeyDown(KeyCode.A))
{
if(prefab.transform.position.x==spawnRight.transform.position.x)
{Destroy(player);
player=Instantiate(prefab,new Vector3(spawnCentre.transform.position.x,prefab.transform.position.y,prefab.transform.position.z),Quaternion.identity) as GameObject;
}
else if(prefab.transform.position.x==spawnCentre.transform.position.x)
{Destroy(player);
player=Instantiate(prefab,new Vector3(spawnLeft.transform.position.x,prefab.transform.position.y,prefab.transform.position.z),Quaternion.identity) as GameObject;
}
}
}
}
}
You are more likely to get an answer if you edit your question to include the code rather than provide a link. Be sure to select your code and use the 101/010 button to format it.
Just a suggestion, but you should consider changing the player's position ins$$anonymous$$d of making a new one. It is cheaper.
You are also comparing floating point numbers using ==. Perhaps making it a range like would help
if(prefab.transform.position.x>=spawnCentre.transform.position.x - delta && prefab.transform.position.x<=spawnCentre.transform.position.x + delta)
Answer by zaid87 · Aug 25, 2014 at 03:43 AM
I might be wrong on this, but my guess is that since the checking for "if the character is in the middle" comes after the checking "if character is at the side", the system ends up doing something like this:
Character is on Right -> Change to Middle -> Character is on Middle -> Change to Left.
Since IF ELSE statements checks every IF, the second statement becomes true since the first statement already alters the character position.
A simple way of fixing this that I can think of is to reverse the order of the checking (when press 'A', check if the player is at Middle first then check if he's on the Right). Or you can use Switch since it doesn't checks every statement so this problem shouldn't happen.
Answer by leonsver1 · Aug 25, 2014 at 05:26 AM
thanks for answering i have tried that but still jumps from one end to another :/
I just noticed something. Why are you using the prefab's position inside the IF statement even though it's the player's position you are changing?
Try using the player's position ins$$anonymous$$d inside the IF statement.
Your answer
Follow this Question
Related Questions
Random spawnpoint where only one prefab can spawn! 1 Answer
UNET - Server is spawned in correct spawn position but players are spawned "half way" 0 Answers
How do I spawn a certain amount of enemy ai / It's spawning too many enemy ai's at one time 1 Answer
[Help] How Do I Randomly Spawn Game Objects On Specific Coordinates? 3 Answers