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 leonsver1 · Aug 24, 2014 at 02:48 PM · spawnspawnpointsspawnpoint

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;
                         }
                 }
                                    }
         }
 }
Comment
Add comment · Show 2
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 robertbu · Aug 24, 2014 at 02:49 PM 1
Share

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.

avatar image matthewbauer · Aug 25, 2014 at 01:23 AM 0
Share

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)

2 Replies

· Add your reply
  • Sort: 
avatar image
0

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.

Comment
Add comment · 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
0

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 :/

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 zaid87 · Aug 25, 2014 at 06:24 AM 0
Share

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

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

4 People are following this question.

avatar image avatar image avatar image avatar image

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

How do I control where enemies spawn? 1 Answer


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