Beispiel #1
0
    // Update is called once per frame
    void Update()
    {
        RaycastHit hit;

        if (Physics.Linecast(
                transform.position,
                transform.position + transform.forward * Speed,
                out hit))
        {
            if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Karts"))
            {
                AmmoStorage hitStorage = hit.transform.GetComponentInChildren <AmmoStorage>() as AmmoStorage;
                if (!ReferenceEquals(hitStorage, Shooter))
                {
                    Shooter.AddScore();
                }

                hitStorage.DealDamage();

                Destroy(gameObject);
            }
            else
            {
                transform.position = hit.point;
                Vector3 newForward = Vector3.Reflect(transform.forward, hit.normal);
                newForward.y      = 0f;
                transform.forward = Vector3.Normalize(newForward);
            }
        }

        transform.position += transform.forward * Speed;
    }
        public void ShouldNotRecoverMoreThanMaxAmmunition(uint recoveryAmount)
        {
            var maxAmmuntion = 10u;
            var storage      = new AmmoStorage(maxAmmuntion);

            storage.Recover(recoveryAmount);

            Assert.AreEqual(recoveryAmount.Clamp(0, storage.MaxAmount), storage.CurrentAmount);
        }
Beispiel #3
0
    void OnTriggerEnter(Collider col)
    {
        AmmoStorage container = col.transform.GetComponent <AmmoStorage>();

        if (container != null)
        {
            container.AddAmmo();
            Destroy(this.gameObject);
        }
    }
        public void ShouldBeEmptyWhenRequestAllStorageAmmo(uint requestAmmo)
        {
            var storage = new AmmoStorage(requestAmmo);

            storage.FullReffil();

            var ammo = storage.GetAmmo(requestAmmo);

            Assert.AreEqual(requestAmmo, ammo);
            Assert.IsTrue(storage.Empty);
        }
        public void ShouldGetXAmmoWhenRequested(uint requestAmmo, uint expected)
        {
            var maxAmmuntion = 10u;
            var storage      = new AmmoStorage(maxAmmuntion);

            storage.FullReffil();

            var ammo = storage.GetAmmo(requestAmmo);

            Assert.AreEqual(expected, ammo);
        }
Beispiel #6
0
    void Start()
    {
        //we know in this case the prefab is just 1 GameObject
        loadedAmmo  = ((GameObject)shootablePrefab).GetComponentsInChildren <Shootable> (true) [0];
        ammoStorage = AmmoStorage.Instance;         //singleton
        Transform baseAmmoTransform = loadedAmmo.GetComponentsInChildren <Transform> (true) [0];

        baseAmmoRotation = baseAmmoTransform.rotation;
        triggerPulled    = false;
        timeSinceShot    = 0F;
    }
Beispiel #7
0
    void CreateHud(bool Player1, PlayerType car)
    {
        Transform Hud = (Transform)Instantiate(HudPreFab);

        Hud.SetParent(this.gameObject.transform, false);

        RectTransform pos = Hud.gameObject.GetComponent <RectTransform>();

        RectTransformExtensions.SetPositionOfPivot(pos, new Vector2(0, Player1 ? Screen.height / 2 : 0));
        RectTransformExtensions.SetHeight(pos, Screen.height / 2);

        AmmoStorage storage = car.gameObject.GetComponentInChildren <AmmoStorage>();

        Hud.GetComponentInChildren <AmmoDisplay>().SetAmmoStorage(storage);
        Hud.GetComponentInChildren <ScoreDisplay>().SetAmmoStorage(storage);
    }
Beispiel #8
0
 public void SetAmmoStorage(AmmoStorage kart)
 {
     storage = kart;
 }