MultiPlayer Transform Sync
Hello everyone, I have a Multiplayer TPS character attached a shooting script on. When pressed fire it fires, all the bullets and characters are synced very well but the bullet spawn position is not. I am using a function to rotate spine. The bullet spawn rotates with the spine. The problem is actual bullet spawn is at the tip of the barrel as it should be. When i check from sceene window i can clearly see that the bullet spawn is moving relative to spine as well. But bullets spawn at the original start position of the bullet spawn point whichchanges after start. The model holds the gun and rotates to forward and IK stuff. Any idea why? i tried these codes so far. any idea? Up picture is start pos, and down is what it is after start but still bullets spawn at first position.. what i tried so far;
[Command] void CmdFire1() {
var bullet = (GameObject)Instantiate(projectile, barrelOut.position, barrelOut.rotation);
bullet.GetComponent<Rigidbody>().AddForce(transform.forward * bulletVelocity, ForceMode.VelocityChange);
NetworkServer.Spawn(bullet);
}
[Command]
void CmdFire2()
{
var bullet = (GameObject)Instantiate(projectile, barrelOut.position, barrelOut.rotation);
bullet.GetComponent<Rigidbody>().AddForce(Vector3.forward * bulletVelocity, ForceMode.VelocityChange);
NetworkServer.Spawn(bullet);
}
[Command]
void CmdFire3()
{
Vector3 direction = barrelOut.transform.position;
var bullet = (GameObject)Instantiate(projectile, barrelOut.position, barrelOut.rotation);
bullet.GetComponent<Rigidbody>().AddForce(direction * bulletVelocity, ForceMode.VelocityChange);
NetworkServer.Spawn(bullet);
}
[Command]
void CmdFire4()
{
Vector3 direction = barrelOut.transform.localPosition;
var bullet = (GameObject)Instantiate(projectile, barrelOut.position, barrelOut.rotation);
bullet.GetComponent<Rigidbody>().AddForce(direction * bulletVelocity, ForceMode.VelocityChange);
NetworkServer.Spawn(bullet);
}
[Command]
void CmdFire5()
{
Vector3 direction = barrelOut.transform.localPosition;
var bullet = (GameObject)Instantiate(projectile, barrelOut.position, barrelOut.rotation);
bullet.GetComponent<Rigidbody>().AddForce(direction * bulletVelocity, ForceMode.VelocityChange);
NetworkServer.Spawn(bullet);
}
[Command]
void CmdFire6()
{
Vector3 direction = barrelOut.transform.parent.InverseTransformDirection(barrelOut.transform.forward);
var bullet = (GameObject)Instantiate(projectile, barrelOut.position, barrelOut.rotation);
bullet.GetComponent<Rigidbody>().AddForce(direction * bulletVelocity, ForceMode.VelocityChange);
NetworkServer.Spawn(bullet);
}
[Command]
void CmdFire7()
{
Vector3 direction = barrelOut.transform.worldToLocalMatrix.MultiplyVector(barrelOut.transform.forward);
var bullet = (GameObject)Instantiate(projectile, barrelOut.position, barrelOut.rotation);
bullet.GetComponent<Rigidbody>().AddForce(direction * bulletVelocity, ForceMode.VelocityChange);
NetworkServer.Spawn(bullet);
}
[Command]
void CmdFire8()
{
}
[Command]
void CmdFire9()
{
var bullet = (GameObject)Instantiate(projectile, barrelOut.transform.position, barrelOut.rotation);
bullet.GetComponent<Rigidbody>().AddForce(cam.position * bulletVelocity, ForceMode.VelocityChange);
NetworkServer.Spawn(bullet);
}
[Command]
void CmdFire10()
{
Vector3 direction = barrelOut.transform.localPosition;
var bullet = (GameObject)Instantiate(projectile, barrelOut.transform.localPosition, barrelOut.localRotation);
bullet.GetComponent<Rigidbody>().AddForce(direction * bulletVelocity, ForceMode.VelocityChange);
NetworkServer.Spawn(bullet);
}
Your answer
Follow this Question
Related Questions
Need help with multiple updating transform positions 2 Answers
Vector3.Lerp not cooperating with me 0 Answers
Move plane horizontally using 2D controller 0 Answers
Player Floating 0 Answers
How would someone go about creating multiple triggers in one script 0 Answers