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); } }
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); }