コード例 #1
0
    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());
    }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
    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);
    }
コード例 #4
0
 //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;
 }
コード例 #5
0
        protected virtual void Bonus_Laser_MakeAction()
        {
            LaserActors();
            LaserPlayground();
            Vibrations.Vibrate(16 * 60);

            DeactivateBonus();
        }
コード例 #6
0
        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];
        }
コード例 #7
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);
        }
    }
コード例 #8
0
    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);
            }
        }
    }
コード例 #9
0
    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);
        }
    }
コード例 #10
0
        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);
            }
        }
コード例 #11
0
ファイル: FishingView.cs プロジェクト: errcw/fishing-girl
        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;
            }
        }
コード例 #12
0
 private void Start()
 {
     v = new Vibrations();
     print(v.HasAmplitudes() ? "We can use amplitude control inside of vibrations"
     : "Just simple vibrations without amplitude control supported");
 }
コード例 #13
0
 public void VibrationOnTouchingPlayerWithHookhead()
 {
     StartCoroutine(CancelVibration(Vibrations.PlayVibration("HookheadOnPlayer", playerMovement.playerInputDevice)));
 }
コード例 #14
0
 public void VibrationOnProjectileDestroyed()
 {
     StartCoroutine(CancelVibration(Vibrations.PlayVibration("HookProjectileDestroyed", playerMovement.playerInputDevice)));
 }
コード例 #15
0
    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)));
                    }
                }
            }
        }
    }
コード例 #16
0
    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());
        }
    }