• 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
Question by willwdaniels87 · Jul 10, 2022 at 11:25 PM · transformplayertransform.positionlistsvector2

Player Swap position

I've put together a script which lets me pick between multiple players in a list which activates the selected player and deactivates the others and their movement scripts etc. The issue I'm having is players always spawn back to start of level or wherever there were last deactivated. I want new player to replace the previous players position. My character swap script is attached to a parent gameobject and all players are children of that object. I'm still learning but I'm guessing I need a vector2 or transform component in there somewhere but I can't figure out where and correct syntax? Any help would be much appreciated. Thanks

Here is my characterSwap Script.

using System.Collections; using System.Collections.Generic; using UnityEngine; using Cinemachine;

public class CharacterSwap : MonoBehaviour { public GameObject character; public List possibleCharacters; public int whichCharacter;

 public CinemachineVirtualCamera cam;

 void Start()
 {
     if(character == null && possibleCharacters.Count >= 1)
     {
         character = possibleCharacters[0];
     }
     Swap();
 }

 void Update()
 {
     ProcessInput();
 }

 private void ProcessInput()
 {
     if (Input.GetKeyDown(KeyCode.Q))
     {
         if (whichCharacter == 0)
         {
             whichCharacter = possibleCharacters.Count - 1;
         }
         else
         {
             whichCharacter -= 1;
         }
         Swap();
     }

     if (Input.GetKeyDown(KeyCode.E))
     {
         if (whichCharacter == possibleCharacters.Count - 1)
         {
             whichCharacter = 0;
         }
         else
         {
             whichCharacter += 1;
         }
         Swap();
     }
 }

 public void Swap()
 {
     character = possibleCharacters[whichCharacter];
     character.GetComponent<NewPlayer>().enabled = true;
     for (int i = 0; i < possibleCharacters.Count; i++)
     {
         //disable movement script
         if (possibleCharacters[i] != character)
         {
             possibleCharacters[i].GetComponent<NewPlayer>().enabled = false;
         }

         //deactivate other characters
         possibleCharacters[whichCharacter].SetActive(false);
         whichCharacter++;
         if (whichCharacter >= possibleCharacters.Count)
             whichCharacter = 0;
         possibleCharacters[whichCharacter].SetActive(true);

         //character spawn to previous characters position ???
         
     } 
     cam.Follow = character.transform;
 }

}

Comment

People who like this

0 Show 0
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

1 Reply

· Add your reply
  • Sort: 
avatar image
Best Answer

Answer by Deuce2008 · Jul 13, 2022 at 01:46 PM

Here try this:

 public void Swap()
  {
      //Sorry if the indents are wrong working on this in the browser
      //Saves the old charactors position
      Vector3 prev_pos = charactor.transform.position;
 
      character = possibleCharacters[whichCharacter];
      character.GetComponent<NewPlayer>().enabled = true;
 
      //Sets the new position
      charactor.transform.position = prev_pos;
 
      for (int i = 0; i < possibleCharacters.Count; i++)
      {
          //disable movement script
          if (possibleCharacters[i] != character)
          {
              possibleCharacters[i].GetComponent<NewPlayer>().enabled = false;
          }
          //deactivate other characters
          possibleCharacters[whichCharacter].SetActive(false);
          whichCharacter++;
          if (whichCharacter >= possibleCharacters.Count)
              whichCharacter = 0;
          possibleCharacters[whichCharacter].SetActive(true);
          //character spawn to previous characters position ???
          
 
      } 
      cam.Follow = character.transform;
  }

Comment

People who like this

0 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 willwdaniels87 · Jul 17, 2022 at 01:45 AM 0
Share

Hey mate, Thanks for the help! It has worked but its causing issues with my Camera Follow now. I should be able to work it out now. Thanks again

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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

202 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Why does my player go to a random position after setting its position to a specific Vector3 and loading a level? 1 Answer

Vector2.moveTowards but only on one axis 1 Answer

child not set to parent while in for loop 1 Answer

moving objects with transform position 2 Answers

My character's y position gets reset on play. 0 Answers


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