void Shoot()
{
// Create the Bullet from the Bullet Prefab
GameObject bullet = Instantiate(
bulletPref,
bulletSpawn.position,
bulletSpawn.rotation);
// Add velocity to the bullet
bullet.GetComponent<Rigidbody>().velocity = bullet.transform.forward * 700;
//// Spawn the bullet on the Clients
// NetworkServer.Spawn(bullet);
CmdSpawn(bullet);
// Destroy the bullet after 2 seconds
Destroy(bullet, 2.0f);
}
[Command]
void CmdSpawn(GameObject bullet)
{
//Spawn the bullet on the Clients
NetworkServer.Spawn(bullet);
}
using UnityEngine;
using UnityEngine.Networking;
public class PlayerWeapon : NetworkBehaviour
{
[SerializeField] private float[] speedBullet = new float[4] { 10f, 30f, 50f, 80f }; // Начальная скорость полета пули для всех оружий
[SerializeField] private GameObject[] bulletPref = new GameObject[4]; // Префаб пли для каждого оружия
[SerializeField] private Transform[] bulletPivot = new Transform[4]; // Точка спавна пули для каждого оружия
int syncWeaponIndex = 0;
/// <summary>
/// Метод для осуществления стрельбы
/// </summary>
private void Update()
{
if(isLocalPlayer)
{
if (Input.GetButton("Fire1"))
{
CmdShoot();
}
}
}
/// <summary>
/// Посылаем на сервер команду заспавнить пулю
/// </summary>
[Command]
void CmdShoot()
{
int weapon = syncWeaponIndex;
// Create the Bullet from the Bullet Prefab
GameObject bullet = (GameObject)Instantiate(
bulletPref[weapon],
bulletPivot[weapon].position,
bulletPivot[weapon].rotation);
//// Add velocity to the bullet
bullet.GetComponent<Rigidbody>().velocity = bullet.transform.forward * speedBullet[weapon];
NetworkServer.Spawn(bullet);
//// Destroy the bullet after 10 seconds
Destroy(bullet, 3.0f);
}
}
using UnityEngine;
using UnityEngine.Networking;
public class PlayerWeapon : NetworkBehaviour
{
[SerializeField] private float[] speedBullet = new float[4] { 10f, 30f, 50f, 80f }; // Начальная скорость полета пули для всех оружий
[SerializeField] private GameObject[] bulletPref = new GameObject[4]; // Префаб пли для каждого оружия
[SerializeField] private Transform[] bulletPivot = new Transform[4]; // Точка спавна пули для каждого оружия
int syncWeaponIndex = 0;
/// <summary>
/// Метод для осуществления стрельбы
/// </summary>
private void Update()
{
if(isLocalPlayer)
{
if (Input.GetButton("Fire1"))
{
CmdShoot();
}
}
}
/// <summary>
/// Посылаем на сервер команду заспавнить пулю
/// </summary>
[Command]
void CmdShoot()
{
int weapon = syncWeaponIndex;
// Create the Bullet from the Bullet Prefab
GameObject bullet = (GameObject)Instantiate(
bulletPref[weapon],
bulletPivot[weapon].position,
bulletPivot[weapon].rotation);
//// Add velocity to the bullet
bullet.GetComponent<Rigidbody>().velocity = bullet.transform.forward * speedBullet[weapon];
NetworkServer.Spawn(bullet);
//// Destroy the bullet after 10 seconds
Destroy(bullet, 3.0f);
}
}