// this function will be called upon powerup use / collision after trown public override void OnActivate() { //Make sure powerups can only be activated once! if (activated) { return; } activated = true; ChadControls otherChad = null; if (_LastCollider) { otherChad = _LastCollider.gameObject.GetComponent <ChadControls>(); } if (otherChad) { // rustle his jimmies Ragdoll.ImpactParams param = new Ragdoll.ImpactParams(gameObject.transform.position, Vector3.Zero, 0.0f); param.bodyPartFactor[(int)Ragdoll.BODYPART.SPINE] = 0.88f; param.bodyPartFactor[(int)Ragdoll.BODYPART.RIGHT_LOWER_LEG] = 10.0f; param.bodyPartFactor[(int)Ragdoll.BODYPART.LEFT_LOWER_LEG] = 5.0f; param.bodyPartFactor[(int)Ragdoll.BODYPART.HEAD] = -2.0f; param.force = otherChad.transform.forward * otherChad.CurrentVelocity.y * 50.0f; otherChad.ActivateRagdoll(3.0f, param); SlipSound.Play(); } Explosion(); }
//public override void OnCollisionEnter(Collider collider) //{ // //Check if colliding with a player // ChadControls otherChad = collider.gameObject.GetComponent<ChadControls>(); // if (!otherChad) // { // base.OnCollisionEnter(collider); // } // else // { // ChadControls localChad = MatchSystem.instance.LocalChad; // TEAM_TYPE playerTeam = MatchSystem.instance.GetPlayerTeam(ObjectOwner.gameObject); // TEAM_TYPE otherPlayerTeam = MatchSystem.instance.GetPlayerTeam(collider.gameObject); // if (localChad && (otherPlayerTeam != playerTeam)) // base.OnCollisionEnter(collider); // } //} // this function will be called upon powerup use / collision after trown public override void OnActivate() { //Make sure powerups can only be activated once! if (activated) { return; } activated = true; // boom particles, Gustav do your magic, sprinkla lite magic till boisen Explosion(); ChadControls localChad = MatchSystem.instance.LocalChad; TEAM_TYPE playerTeam = MatchSystem.instance.GetPlayerTeam(ObjectOwner.gameObject); TEAM_TYPE otherPlayerTeam = MatchSystem.instance.GetPlayerTeam(localChad.gameObject); if (localChad && otherPlayerTeam != playerTeam) { float distance = Vector3.Distance(localChad.transform.position, transform.position); if (distance < ExplosionRadius) { Vector3 forceDir = localChad.transform.position - transform.position; forceDir.Normalize(); forceDir.y += 3.0f; float distForce = ExplosionRadius - distance; Vector3 force = forceDir * ExplosionForce * distForce; Ragdoll.ImpactParams param = new Ragdoll.ImpactParams(gameObject.transform.position, force, 0.0f); localChad.ActivateRagdoll(2.0f, param); AnnouncerSoundManager.Instance.Announce(ANNOUNCEMENT_TYPE.EXPLODED); } } }
public override void OnCollisionStay(Collider collider) { if (MatchSystem.instance && isOwner && State != STATE.RAGDOLL && !Locked) { ChadControls otherChad = collider.gameObject.GetComponent <ChadControls>(); if (otherChad) { float modifiedBaseSpeed = PickedUpObject ? PickedUpObject.MovementSpeedModifier * BaseSpeed : BaseSpeed; float TheirVelocity = otherChad.CurrentVelocity.y;//Length(); if (MatchSystem.instance.GetPlayerTeam(collider.gameObject) == MatchSystem.instance.GetPlayerTeam(this.gameObject)) { //Debug.Log("Trying to tackle player on same team, you baka."); } else if (otherChad.CanBeTackled && ((CurrentVelocity.y /*Length()*/ > TackleThreshold || (PickedUpObject && CurrentVelocity.y > BaseSpeed)) && CurrentVelocity.y /*Length()*/ >= TheirVelocity)) { Debug.Log("They tackled with: " + TheirVelocity + "(Forward: " + otherChad.CurrentVelocity.y + ", Strafe: " + otherChad.CurrentVelocity.x + ")"); Debug.Log("You tackled with: " + CurrentVelocity.y /*Length()*/ + "(Forward: " + CurrentVelocity.y + ", Strafe: " + CurrentVelocity.x + ")"); // Activate ragdoll Vector3 force = (transform.forward + Vector3.Up * 0.5f) * ImpactFactor * CurrentVelocity.Length(); Ragdoll.ImpactParams param = new Ragdoll.ImpactParams(otherChad.gameObject.transform.position, force, 0.5f); param.bodyPartFactor[(int)Ragdoll.BODYPART.RIGHT_LOWER_LEG] = 1.3f; param.bodyPartFactor[(int)Ragdoll.BODYPART.LEFT_LOWER_LEG] = 1.3f; otherChad.ActivateRagdoll(MinimumRagdollTimer, param); AnnouncerSoundManager.Instance.Announce(ANNOUNCEMENT_TYPE.TACKLED); NetPlayer.HasTackled += 1; CurrentVelocity.y = modifiedBaseSpeed; } } } }