Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 crare · Nov 22, 2017 at 08:09 PM · multiplayer-networkingspawningobjects-movement

spawning and moving object in multiplayer

I'm trying to do this thing where player picks up object from the game map/ current scene. it's instantiated as copy and parent to the player that picked it up. Or so I think it works. Then that player is able to carry that object anywhere and then place it back to the scene. it should be shown to other player too that carrying player is carrying the object. In my game happens so that the the host client is able to carry object correctly but if I run another instance from "run and build" and set it to as client, it now can carry things but whenever he moves, the object it's carrying is lagging behind. but for the host it moves accurately over the other player that's carrying it.

I call these functions from Update() function if player presses 'E' button.

 // drop item at position
     [Command]
     void CmdDropHeldItemAt(int x, int y)
     {
         RaycastHit2D hit = Physics2D.Raycast(new Vector2(x, y), Vector2.zero);
         if(hit.collider == null) // if didn't hit anything, there's nothing on the way.
         {
             GameObject holdedObject = GameObject.Instantiate(heldItem); // make a copy
             Destroy(heldItem); // and delete the original
             holdedObject.transform.parent = map.GetComponent<MapGenerator>().tiles_parent.transform;
             holdedObject.transform.localPosition = new Vector3(0, 0, 0);
             holdedObject.transform.position = new Vector3(x, y, 0);
             holdedObject.GetComponent<BoxCollider2D>().enabled = true;
             holdedObject.GetComponent<NetworkIdentity>().localPlayerAuthority = false;
             holdedObject.GetComponent<NetworkTransform>().enabled = false;
             NetworkServer.Spawn(holdedObject); // spawn the gameobject for clients.
             holdingItem = false;
             return;
         } else
         {
             Debug.Log("hitted: " + hit.collider.name);
         }
         
         Debug.Log("Can't drop item here. x=" + x + ", y=" + y);
         return;
     }
     // pickup item at position
     [Command]
     void CmdPickupItemAt(int x, int y)
     {
         RaycastHit2D hit = Physics2D.Raycast(new Vector2(x, y), Vector2.zero);
         if (hit.collider != null && hit.collider.tag == "heldOverHead")
         {
             heldItem = GameObject.Instantiate(hit.collider.gameObject); // make a copy
             Destroy(hit.collider.gameObject); // and delete the original
             heldItem.transform.parent = transform;
             heldItem.transform.localPosition = new Vector3(0, 0.8f, 0);
             heldItem.GetComponent<BoxCollider2D>().enabled = false;
             heldItem.GetComponent<NetworkTransform>().enabled = true;
             heldItem.GetComponent<NetworkIdentity>().localPlayerAuthority = true;
             NetworkServer.SpawnWithClientAuthority(heldItem, connectionToClient); // spawn to server too, so other see it.
             holdingItem = true;
             return;
         }
         
         Debug.Log("Can't pickup item here. x=" + x + ", y=" + y);
         return;
     }

also do I need this somewhere? probably yes.

 if (!isLocalPlayer)
 {
       return;
 }
Comment
Add comment
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

0 Replies

· Add your reply
  • Sort: 

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

73 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

Related Questions

can't get clients to spawn object 0 Answers

Networking - Spawning non Player Object 0 Answers

Why are objects only spawning on host but not on remote clients? 3 Answers

Check when a player finished spawning [Netcode For GameObjects!] 2 Answers

When the game starts, how can I instantiate a ball onto a random client? 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