示例#1
0
        private void CollisionHandler(JCollider thisBody, JCollider otherBody)
        {
            var playerHealth = otherBody.GetComponent <PlayerHealth>();
            var otherColor   = settings.color;

            if (playerHealth != null)
            {
                var playerSettings = otherBody.GetComponent <PlayerSettings>();
                otherColor = playerSettings.color;
                if (playerHealth.DoDamage(settings.Damage))
                {
                    AFEventManager.INSTANCE.PostEvent(AFEvents.Kill(settings.PlayerOwnerNumber, playerSettings.playerNumber));
                }
            }
            else
            {
                Debug.Log("Bullet hit something else..");
            }

            if (playerHealth != null || settings.DestroyOnAnyOverlap)
            {
                Debug.Log("Time to destroy bullet");
                var hitParticles = Instantiate(settings.hitParticlesPrefab, transform.position, transform.rotation);
                var colorModule  = hitParticles.colorOverLifetime;
                colorModule.enabled = true;
                ParticleSystem.MinMaxGradient gradient = new ParticleSystem.MinMaxGradient(settings.color, otherColor);
                var mainModule = hitParticles.main;
                mainModule.startColor = gradient;
                Destroy(gameObject);
            }
        }
示例#2
0
        public void OnEnterHandler(JCollider thisBody, JCollider otherBody)
        {
            Debug.Log("OnEnterHandler for WeaponPickup: " + gameObject.name);
            var weaponSlot = otherBody.GetComponent <WeaponSlot>();

            if (weaponSlot == null || !weaponSlot.enabled)
            {
                return;
            }

            string name  = weaponSlot.ActiveWeaponName;
            var    index = -1;

            for (var i = 0; i < WeaponsUpgradesNames.Length; i++)
            {
                if (WeaponsUpgradesNames[i].Equals(weaponSlot.ActiveWeaponName))
                {
                    index = i;
                    break;
                }
            }

            var nextWeaponIndex = (index + 1) % WeaponsUpgrades.Length;
            var upgradeColor    = GetComponentInChildren <Renderer>().material.color;

            // nextWeaponIndex + 1 since WeaponUpgradePath.CurrentUpgradeNumber is 1-indexed and nextWeaponIndex is 0-indexed
            weaponSlot.AttachWeapon(WeaponsUpgrades[nextWeaponIndex], new WeaponUpgradePath(upgradeColor, WeaponsUpgrades.Length, nextWeaponIndex + 1));

            thisBody.NotifyDestroyCollider();
            Destroy(gameObject);
        }