public void SendFeedbacks(InputDevice device, string characterID) { switch (characterID) { // orange case "0": newColor = new Color(.9215686f, 0.7294118f, 0.345098f); break; // rose case "1": newColor = new Color(0.9960784f, 0.5686275f, 0.7568628f); break; // bleu case "2": newColor = new Color(0.2313726f, 0.572549f, 0.9882353f); break; // vert case "3": newColor = new Color(0.4627451f, 0.7372549f, 0.2862745f); break; // rouge case "4": newColor = new Color(0.9098039f, 0.1176471f, 0.3176471f); break; } overlaySprite.color = newColor; StartCoroutine(CancelVibration(Vibrations.PlayVibration("Death", device), device)); StartCoroutine(ColorBlink()); }
protected virtual void MakeActorFall() { if (activeActor == null || fallingPause > 0) { return; } if (Settings.DropActorAnimation) { activeActor.IsFalling = true; activeActor.FallingSpeed = GetGameSpeed(SettingOptions.GameSpeed.Falling); } else { for (; activeActor.Position.Y < playground.GetLength(1); activeActor.Position.Y++) { if (ActorCollideWithPlayground(activeActor.Position, activeActor.Shape)) { break; } } activeActor.Position.Y--; MoveActorDown(activeActor); Vibrations.Vibrate(50); } }
IEnumerator DoDash() { hookScript.DisableRope(false); Invoke("StopDash", dashTime); Invoke("UnlockMovementDash", inDashStatusTime); if (lockMovement) { yield break; } rigid.velocity = Vector3.zero; rigid.gravityScale = 0; yield return(new WaitForEndOfFrame()); rigid.gravityScale = gravity; Invoke("ResetDashCD", dashCDTime); if (lockMovement) { yield break; } rigid.AddForce((shootPos.transform.position - transform.position).normalized * dashForce, ForceMode2D.Impulse); InvokeRepeating("DashEffect", 0, 0.04f); Invoke("CancelDashEffect", dashTime * 3.5f); StartCoroutine(CancelVibration(Vibrations.PlayVibration("Dash", playerInputDevice))); AudioManager.instance.PlaySound("dash", playerNumber); }
//Désactive tout ce qui est relatif au grappin public void DisableRope(bool cut) { StartCoroutine("ResetHookCD"); playerMovement.StateNotHooked(); joint.enabled = false; if (!cut) { if (projectileScript) { projectileScript.End(); } } else { StartCoroutine(CancelVibration(Vibrations.PlayVibration("RopeCut", playerMovement.playerInputDevice))); stockedProjectileScript = projectileScript; projectileScript = null; currentProjectile = null; Invoke("DestroyProjectile", timeBeforeDestroy); } line.gameObject.SetActive(false); jointNotCreated = true; timeRemaining = timeHooked; line.startColor = colorRope; line.endColor = colorRope; }
protected virtual void Bonus_Laser_MakeAction() { LaserActors(); LaserPlayground(); Vibrations.Vibrate(16 * 60); DeactivateBonus(); }
protected virtual void FinishDeleteFullLines() { RemoveFullLines(blinkLines); int linesCount = blinkLines.Count(); IncreaseScoreForLines(linesCount); Vibrations.Vibrate(25 * linesCount); if (actors.Count == 0) { CreateNewActor(); } blinkLines = new int[0]; }
void OnCollisionEnter2D(Collision2D collision) { // Collision avec plateformes if (collision.gameObject.layer == 28 || collision.gameObject.layer == 16) { StartCoroutine(CancelVibration(Vibrations.PlayVibration("CollisionPlayerPlayer", playerInputDevice))); // AudioManager.instance.PlaySound("playerHitPlayer",playerNumber); } // Collision avec joueurs else if (collision.gameObject.tag == "Player") { StartCoroutine(CancelVibration(Vibrations.PlayVibration("CollisionPlayerPlayer", playerInputDevice))); AudioManager.instance.PlaySound("playerHitPlayer", playerNumber); } }
public void CutRope(Vector3 cuttingPos, string cutter) { if (hook.currentProjectile != null) { if (hook.currentProjectile.GetComponent <Projectile>().hooked&& hook.playerMovement.playerNumber != cutter) { projectile.GetComponent <Projectile>().cut = true; lifeManager = hook.player.GetComponent <PlayerLifeManager>(); lifeManager.CancelCleanLastAttacker(); lifeManager.lastAttacker = cutter; lifeManager.CleanLastAttacker(); //Rope to projectile GameObject cutRope = new GameObject(); cutRope.AddComponent <LineRenderer>(); cutRope.GetComponent <LineRenderer>().sortingLayerName = "Rope"; cutRope.AddComponent <RopeScript>(); RopeScript script = cutRope.GetComponent <RopeScript>(); script.color = hook.line.startColor; script.startPosition = projectile.GetComponent <Projectile>().pivot; script.endPosition = cuttingPos; script.firstConnectedBody = projectile; Instantiate(Resources.Load <ParticleSystem>("Prefabs/CutHook/Cut"), cuttingPos, transform.rotation); StartCoroutine(CancelVibration(Vibrations.PlayVibration("RopeCut", hook.playerMovement.playerInputDevice))); AudioManager.instance.PlaySound("ropeCut", hook.playerMovement.playerNumber + "Arrow"); //Rope to player hook.ropeCut = true; GameObject cutRope2 = new GameObject(); cutRope2.AddComponent <LineRenderer>(); cutRope2.GetComponent <LineRenderer>().sortingLayerName = "Rope"; cutRope2.AddComponent <RopeScript>(); RopeScript script2 = cutRope2.GetComponent <RopeScript>(); script2.connectedToPlayer = true; script2.color = hook.line.startColor; script2.startPosition = hook.player.transform.position; script2.endPosition = cuttingPos; script2.firstConnectedBody = hook.player; script2.hookScript = hook; hook.DisableRope(true); } } }
IEnumerator ArrowHit(Collider2D collision, int bladeLevel) { if (!playerMovement.lockMovement) { playerMovement.lockMovement = true; Vector2 directionKnockBack = -(collision.gameObject.transform.position - transform.position).normalized; playerMovement.rigid.velocity = Vector3.zero; AddLastAttacker(collision.gameObject.GetComponent <Hook>().playerNumber); playerMovement.rigid.velocity = Vector3.zero; playerMovement.rigid.gravityScale = 0; playerMovement.rigid.angularVelocity = 0; yield return(new WaitForSeconds(freezeFrameDuration)); playerMovement.rigid.gravityScale = playerMovement.gravity; switch (bladeLevel) { case 0: print("You are not suppossed to be there ! How do you came ?!"); break; case 1: playerMovement.rigid.AddForce(directionKnockBack * knockBackBlade1, ForceMode2D.Impulse); break; case 2: playerMovement.rigid.AddForce(directionKnockBack * knockBackBlade2, ForceMode2D.Impulse); break; case 3: playerMovement.rigid.AddForce(directionKnockBack * knockBackBlade3, ForceMode2D.Impulse); break; default: print("Impossible, you just CAN'T be there !"); break; } StartCoroutine(CancelVibration(Vibrations.PlayVibration("CollisionArrowArrow", playerMovement.playerInputDevice))); AudioManager.instance.PlaySound("arrowHitArrow", playerNumber + "Arrow"); Invoke("UnlockMovement", knockBackTime); } }
protected virtual void MoveActorTowardsExplosion(Actor actor) { var newPosition = new Point(actor.Position.X, actor.Position.Y + 1); if (!ActorCollideWithPlayground(newPosition, actor.Shape)) { actor.Position = newPosition; } else { var extraPower = Game1.Random.Next(0, cubesExplosionExtraPowerProb) == cubesExplosionExtraPowerProb; ExplodeActor(actor, !extraPower ? cubesExplosionPower : cubesExplosionExtraPower); Vibrations.Vibrate(extraPower ? 350 : 150); if (actor == activeActor) { activeActor = null; } actors.Remove(actor); } }
private void OnFishingEvent(object stateObj, FishingEventArgs e) { switch (e.Event) { case FishingEvent.FishHooked: goto case FishingEvent.FishEaten; case FishingEvent.FishEaten: Vector2 vibration = GetLureFeedback(e.Fish); _context.Input.AddVibration(Vibrations.Constant(vibration.X, vibration.Y, 0.5f)); _lureHookedEffect.Play(0.3f, 0f, 0f); break; case FishingEvent.FishCaught: _caughtEffect.Play(0.4f, 0f, 0f); break; case FishingEvent.LureBroke: _context.Input.AddVibration(Vibrations.FadeOut(0.2f, 0.3f, 1f, Easing.Uniform)); _lureAnimation = new ColorAnimation(_lure, Color.TransparentWhite, 0.5f, InterpolateColor); _lureBrokeEffect.Play(0.8f, 0f, 0f); break; case FishingEvent.LureChanged: _lure = _state.LureSprites[_state.Lure]; _lureChangeEffect.Play(0.4f, 0f, 0f); break; case FishingEvent.RodChanged: _rod = _state.RodSprites[_state.Rod]; break; case FishingEvent.LureIsland: _islandEffect.Play(1f, 0f, 0f); break; } }
private void Start() { v = new Vibrations(); print(v.HasAmplitudes() ? "We can use amplitude control inside of vibrations" : "Just simple vibrations without amplitude control supported"); }
public void VibrationOnTouchingPlayerWithHookhead() { StartCoroutine(CancelVibration(Vibrations.PlayVibration("HookheadOnPlayer", playerMovement.playerInputDevice))); }
public void VibrationOnProjectileDestroyed() { StartCoroutine(CancelVibration(Vibrations.PlayVibration("HookProjectileDestroyed", playerMovement.playerInputDevice))); }
void OnCollisionEnter2D(Collision2D collision) { if (!lifeManager.inRecovery) { //Si c'est une fleche qui est touché on applique un knockback if (collision.gameObject.CompareTag("Arrow")) { //GameObject.Find("SlowMo").GetComponent<SlowMotion>().DoSlowmotion(); switch (collision.gameObject.GetComponent <Hook>().currentBlade) { case CurrentBlade.none: print("Nikoumouk le code, t'es trop lent"); break; case CurrentBlade.blade1: StartCoroutine(ArrowHit(collision, 1)); break; case CurrentBlade.blade2: StartCoroutine(ArrowHit(collision, 2)); break; case CurrentBlade.blade3: StartCoroutine(ArrowHit(collision, 3)); break; default: print("Impossible. IM-PO-SSI-BLE !"); break; } HitFX(collision.GetContact(0).point, collision.gameObject); } //Si le joueur est touché des dégâts lui sont appliqués //Mais avant on vérifie si la collision n'a pas eu de problème en envoyant un raycast entre les deux joueurs pour voir s'il n'y a pas la flèche du défenseur qui était censé bloquer else if (collision.gameObject.CompareTag("Player")) { RaycastHit2D collisionFail = Physics2D.Linecast(transform.position, collision.gameObject.transform.position, layerMaskOthersArrow); if (collisionFail.collider != null) { if (collisionFail.collider.gameObject.CompareTag("Arrow")) { //GameObject.Find("SlowMo").GetComponent<SlowMotion>().DoSlowmotion(); switch (collisionFail.collider.gameObject.GetComponent <Hook>().currentBlade) { case CurrentBlade.none: print("Nikoumouk le code, t'es trop lent"); break; case CurrentBlade.blade1: StartCoroutine(ArrowHit(collisionFail.collider, 1)); break; case CurrentBlade.blade2: StartCoroutine(ArrowHit(collisionFail.collider, 2)); break; case CurrentBlade.blade3: StartCoroutine(ArrowHit(collisionFail.collider, 3)); break; default: print("Impossible. IM-PO-SSI-BLE !"); break; } HitFX(collisionFail.point, collisionFail.collider.gameObject); } } else { foeScript = collision.gameObject.GetComponent <PlayerLifeManager>(); //Appelle la méthode du fx avant celle des dégâts pour qu'elle ne soit pas bloqué par le recovery //GameObject.Find("SlowMo").GetComponent<SlowMotion>().DoSlowmotion(); StartCoroutine(FreezeAttacker(collision.gameObject.transform.position)); foeScript.HitFX(collision.GetContact(0).point, playerMovement.speed); switch (currentBlade) { case CurrentBlade.none: print("Nikoumouk le code, t'es trop lent"); break; case CurrentBlade.blade1: foeScript.TakeDamage(blade1damage, gameObject, true, Vector3.zero, 1); break; case CurrentBlade.blade2: foeScript.TakeDamage(blade2damage, gameObject, true, Vector3.zero, 2); break; case CurrentBlade.blade3: foeScript.TakeDamage(blade3damage, gameObject, true, Vector3.zero, 3); break; default: print("Impossible. IM-PO-SSI-BLE !"); break; } //Différentes vibrations selon si le joueur touché est mort ou pas if (!foeScript.isDead) { StartCoroutine(CancelVibration(Vibrations.PlayVibration("CollisionArrowPlayer", playerMovement.playerInputDevice))); } else { StartCoroutine(CancelVibration(Vibrations.PlayVibration("KillingPlayer", playerMovement.playerInputDevice))); } } } } }
void Update() { //S'assure que le joint ne peut pas être actif sans rigidbody connecté if (joint.connectedBody == null && joint.enabled) { joint.enabled = false; jointNotCreated = true; } //Test si le jeu est en pause if (!isFrozen) { UpdateArrow(); } //Vérifie qu'il y a bien un projectile de créé avant d'y accéder if (currentProjectile != null) { UpdateRope(); //hooked = projectileScript.hooked; VERIF SI PAS CASSE //Test si le grappin est aggripé if (projectileScript.hooked) { if (playerMovement.speed >= hookRecuperationSpeed) { playerMovement.ResetDashCD(); } //Change l'état du joueur playerMovement.StateHooked(); //Active le joint s'il ne l'est pas encore if (jointNotCreated) { CreateJoint(); } TimerRope(); //Si le temps est négatif le grappin est alors détruit if (timeRemaining <= 0) { StartCoroutine(CancelVibration(Vibrations.PlayVibration("HookDestruction", playerMovement.playerInputDevice))); AudioManager.instance.PlaySound("destructionHook", playerMovement.playerNumber + "Hook"); DisableRope(false); } RaycastingDistanceJoint(); if (inverseRetractation) { //Permet de s'approcher du joint uniquement s'il n'y a pas de plateforme directement devant le joueur if (playerMovement.playerInputDevice.RightTrigger.Value > 0 && checkToJoint.collider == null) { joint.distance -= retractationStep; //AudioManager.instance.PlaySound("towing", playerNumber + "Hook"); } //Permet de s'éloigner du joint uniquement s'il n'y a pas de plateforme juste derrière le joueur et que la distance max n'est pas atteinte if (playerMovement.playerInputDevice.LeftTrigger.Value > 0 && checkOppositeToJoint.collider == null) { joint.distance += retractationStep; //permet de faire reculer le joueur avec le changement de distance max joint.maxDistanceOnly = false; //AudioManager.instance.PlaySound("untowing", playerNumber + "Hook"); } else { joint.maxDistanceOnly = true; } } else { //Permet de s'approcher du joint uniquement s'il n'y a pas de plateforme directement devant le joueur if (playerMovement.playerInputDevice.LeftTrigger.Value > 0 && checkToJoint.collider == null) { joint.distance -= retractationStep; //AudioManager.instance.PlaySound("towing", playerNumber + "Hook"); } //Permet de s'éloigner du joint uniquement s'il n'y a pas de plateforme juste derrière le joueur et que la distance max n'est pas atteinte if (playerMovement.playerInputDevice.RightTrigger.Value > 0 && checkOppositeToJoint.collider == null) { joint.distance += retractationStep; //permet de faire reculer le joueur avec le changement de distance max joint.maxDistanceOnly = false; //AudioManager.instance.PlaySound("untowing", playerNumber + "Hook"); } else { joint.maxDistanceOnly = true; } } } } else { playerMovement.StateNotHooked(); hooked = false; } //Test si le joueur appuye sur le bouton du grappin et que le grappin n'est pas en CD if ((playerMovement.playerInputDevice.Action1.WasPressed || playerMovement.playerInputDevice.Action2.WasPressed || playerMovement.playerInputDevice.Action3.WasPressed || playerMovement.playerInputDevice.Action4.WasPressed) && !hookInCD && !isFrozen && MatchStart.gameHasStarted && !ropeCut) { ThrowHookhead(); } //Test si le joueur appuie sur le bouton du grappin mais que celui-ci est cut et donc que le grappin ne peut pas être utilisé else if ((playerMovement.playerInputDevice.Action1.WasPressed || playerMovement.playerInputDevice.Action2.WasPressed || playerMovement.playerInputDevice.Action3.WasPressed || playerMovement.playerInputDevice.Action4.WasPressed) && ropeCut) { //TODO : complete this hookUnvailable.SetActive(true); StartCoroutine(HookUnavailable()); } //Si le joueur relache le bouton on désactive le grappin else if ((playerMovement.playerInputDevice.Action1.WasReleased || playerMovement.playerInputDevice.Action2.WasReleased || playerMovement.playerInputDevice.Action3.WasReleased || playerMovement.playerInputDevice.Action4.WasReleased) && currentProjectile != null) { DisableRope(false); } // Gère le freeze/unfreeze du grappin en fonction de la pause du jeu else if ((playerMovement.playerInputDevice.Action1.WasReleased || playerMovement.playerInputDevice.Action2.WasReleased || playerMovement.playerInputDevice.Action3.WasReleased || playerMovement.playerInputDevice.Action4.WasReleased) && currentProjectile != null && isFrozen) { StartCoroutine(Unfrozen()); } }