- Home /
how to ignore collision on player object in unity multiplayer(2 player) using mirror or unet(depreciated)
am creating a multiplayer block-breaker game. I have 2 players spawns with each having 1 ball & 1 paddle. I want the ball of player 1 to not hit the paddle of player 2 & vice versa.
I tried the code below, but it only runs the second time; the first time the player 1 ball hits the paddle of player 2, it doesn't ignore it, but on the second time, it resolves. private void OnCollisionEnter2D(Collision2D collision) { if (collision.collider.IsTouching(this.gameObject.GetComponent())) { NetworkIdentity networkIdentity = collision.gameObject.GetComponent(); if (networkIdentity != null && collision.gameObject.CompareTag("Paddle")) {
NetworkIdentity playerNetworkIdentity = this.gameObject.GetComponent<NetworkIdentity>();
Debug.Log("netid" + networkIdentity.connectionToClient.connectionId + "PlayerNetId" + playerNetworkIdentity.connectionToClient.connectionId);
if (networkIdentity.connectionToClient.connectionId != playerNetworkIdentity.connectionToClient.connectionId)
{
Debug.Log("inside network identity checker in collision");
//Physics2D.IgnoreCollision(collision.gameObject.GetComponent<Collider2D>(), GetComponent<Collider2D>());
Physics2D.IgnoreCollision(collision.gameObject.GetComponent<Collider2D>(), this.GetComponent<Collider2D>(),true);
}
}
}
}
The specific code Physics2D.IgnoreCollision(collision.gameObject.GetComponent(), this.GetComponent(),true); usually doesn't stop the ball hitting the paddle of the other player first time, but works the second time.
Additionally, it would be nice to know if there is a better way to check in place of above code. In the best case scanario, I would be able to specify at the start of the game that all player 1 objects can not collide with player 2, but any other collision can happen.,I am creating a multiplayer block-breaker game. I have 2 players spawns with each having 1 ball & 1 paddle. I want the ball of player 1 to not hit the paddle of player 2 & vice versa.
I tried the code below, but it only runs the second time; the first time the player 1 ball hits the paddle of player 2, it doesn't ignore it, but on the second time, it resolves. private void OnCollisionEnter2D(Collision2D collision) { if (collision.collider.IsTouching(this.gameObject.GetComponent())) { NetworkIdentity networkIdentity = collision.gameObject.GetComponent(); if (networkIdentity != null && collision.gameObject.CompareTag("Paddle")) {
NetworkIdentity playerNetworkIdentity = this.gameObject.GetComponent<NetworkIdentity>();
Debug.Log("netid" + networkIdentity.connectionToClient.connectionId + "PlayerNetId" + playerNetworkIdentity.connectionToClient.connectionId);
if (networkIdentity.connectionToClient.connectionId != playerNetworkIdentity.connectionToClient.connectionId)
{
Debug.Log("inside network identity checker in collision");
//Physics2D.IgnoreCollision(collision.gameObject.GetComponent<Collider2D>(), GetComponent<Collider2D>());
Physics2D.IgnoreCollision(collision.gameObject.GetComponent<Collider2D>(), this.GetComponent<Collider2D>(),true);
}
}
}
} The specific code Physics2D.IgnoreCollision(collision.gameObject.GetComponent(), this.GetComponent(),true); usually doesn't stop the ball hitting the paddle of the other player first time, but works the second time.
Additionally, it would be nice to know if there is a better way to check in place of above code. In the best case scenario, I would be able to specify at the start of the game that all player 1 objects can not collide with player 2, but any other collision can happen.
Your answer
Follow this Question
Related Questions
I want to make a powerup with a an associated timer on the server side using mirror 1 Answer
Character isn't moving in multiplayer with buttons. 0 Answers
How to handle raycast shooting in multiplayer (Mirror)? 0 Answers
Multiplayer Game Highlight Material 0 Answers
Teams in a Multiplayer Game using Mirror 0 Answers