コード例 #1
0
    public void ServerSpawnWeapon(Server server, WeaponSpawnerState weaponSpawnerState)
    {
        if (weaponSpawnerState.TimeUntilNextSpawn > 0)
        {
            return;
        }

        var weaponDefinition       = WeaponSystem.Instance.GetWeaponDefinitionByType(weaponSpawnerState.Type);
        var bulletsLeft            = weaponDefinition.MaxAmmo / 2;
        var bulletsLeftInMagazine  = Mathf.Min(weaponDefinition.BulletsPerMagazine, bulletsLeft);
        var weaponSpawnerComponent = FindWeaponSpawnerComponent(weaponSpawnerState.Id);

        var weaponObjectState = new WeaponObjectState
        {
            Id   = server.GenerateNetworkId(),
            Type = weaponSpawnerState.Type,
            BulletsLeftInMagazine    = (ushort)bulletsLeftInMagazine,
            BulletsLeftOutOfMagazine = (ushort)(bulletsLeft - bulletsLeftInMagazine),
            RigidBodyState           = new RigidBodyState
            {
                Position        = weaponSpawnerComponent.transform.position,
                EulerAngles     = weaponSpawnerComponent.transform.eulerAngles,
                Velocity        = Vector3.zero,
                AngularVelocity = Vector3.zero
            },
            WeaponSpawnerId = weaponSpawnerState.Id
        };

        SpawnLocalWeaponObject(weaponObjectState);
    }
コード例 #2
0
ファイル: SpawnWeapon.cs プロジェクト: FSorek/SmallProjects
    private IEnumerator StartSpawnWeapon()
    {
        yield return(new WaitForSeconds(spawnDelay));

        activeBox = (GameObject)Instantiate(WeaponToSpawn.gameObject, transform.position + new Vector3(0, spawnHeight, 0), Quaternion.identity);
        NetworkServer.Spawn(activeBox);
        weaponSpawnerState = WeaponSpawnerState.READY;
    }
コード例 #3
0
ファイル: SpawnWeapon.cs プロジェクト: FSorek/SmallProjects
 private void Update()
 {
     if (!isServer)
     {
         return;
     }
     if (weaponSpawnerState == WeaponSpawnerState.EMPTY)
     {
         weaponSpawnerState = WeaponSpawnerState.SPAWNING;
         StartCoroutine(StartSpawnWeapon());
     }
     if (weaponSpawnerState == WeaponSpawnerState.READY)
     {
         if (activeBox == null)
         {
             weaponSpawnerState = WeaponSpawnerState.EMPTY;
         }
     }
 }