Ejemplo n.º 1
0
 /// <inheritdoc/>
 protected override void LoadContent()
 {
     lifeManager = new PlayerLifeManager(game);
     this.seismicChargeCountManager = new SeismicChargeCountManager(game);
     this.collisionDetector.SetSeismicList(this.seismicChargeCountManager.DeployedBombs);
     base.LoadContent();
 }
Ejemplo n.º 2
0
    void OnTriggerEnter(Collider target)
    {
        //if (target.tag != "Player") return;

        // 状態変更

        if (target.tag == "Player")
        {
            Destroy(target.gameObject);

            PlayerLifeManager Plm         = PlayerLife.GetComponent <PlayerLifeManager>();
            GameManager       gameManager = GameObject.Find("GameManager").GetComponent <GameManager>();
            gameManager.LEVEL = 0;
            int life = Plm.DamageReturnInt();
            if (life <= 0)
            {
                GameManager.bGameover = true;
                return;
            }

            Vector3    pos    = new Vector3(StartPoint.transform.position.x, 5.085f, StartPoint.transform.position.z);
            GameObject Player = Instantiate(Level1Player, pos, Quaternion.identity);

            SoundManager.PlaySe("Respawn");

            Player.transform.parent = null;
            player.bDead            = true;
        }
    }
Ejemplo n.º 3
0
 void Start()
 {
     playerLight  = GetComponent <PlayerLightManager>();
     playerHealth = GetComponent <PlayerLifeManager>();
     InvokeRepeating("ConsumeEnergy", 2f, 1f);
     InvokeRepeating("ConsumeHealth", 2f, 1f);
 }
Ejemplo n.º 4
0
 public PlayerLifeManager GetPlayerLifeManager()
 {
     if (this.playerLifeManager == null)
     {
         this.playerLifeManager = GetComponentInChildren <PlayerLifeManager>();
     }
     return(this.playerLifeManager);
 }
Ejemplo n.º 5
0
    // Start is called before the first frame update
    public void Start()
    {
        InputManager.Instance.RegisteredPlayer = this;

        m_body                  = GetComponent <Rigidbody>();
        m_playerLife            = GetComponent <PlayerLifeManager>();
        m_playerLife.OnDamaged += DamageReaction;
    }
Ejemplo n.º 6
0
    //public Camera refMainCamera;
    //public GameObject refPlayer;
    //public Canvas refCanvas;

    // Use this for initialization
    void Start()
    {
        displayTime = 0.0f;
        ///refStatus = GameObject.Find ("Stauts").GetComponent<status> ();
        refLifeManager = GameObject.Find("Player").GetComponent <PlayerLifeManager> ();
        //refMainCamera = (Camera)GameObject.Find ("Main Camera").GetComponent<Camera>();
        //refPlayer = GameObject.Find ("Player");
        //refCanvas = GameObject.Find ("Canvas").GetComponent<Canvas> ();
    }
Ejemplo n.º 7
0
    public void Init()
    {
        _instance = this;

        Restart();

        playerLifeUI.Init(maxLife);
        playerLifeUI.UpdateValue(maxLife);
    }
Ejemplo n.º 8
0
    private void Update()
    {
        PlayerLifeManager player = Player.instance.GetComponent <PlayerLifeManager>();

        if (player.health == player.maxHealth)
        {
            button.gameObject.SetActive(false);
        }
    }
Ejemplo n.º 9
0
    // Start is called before the first frame update
    void Start()
    {
        playAgainPanel    = GameObject.Find("PlayAgainPanel");
        playerUIPanel     = GameObject.Find("PlayerUIPanel");
        gameConditionText = playAgainPanel.GetComponentsInChildren <Text>()
                            .ToList()
                            .Find(text => text != null && text.gameObject.name.Equals("GameConditionText"));

        playerLifeManager = FindObjectOfType <PlayerLifeManager>();
        asteroidSpawner   = FindObjectOfType <AsteroidSpawner>();
        gameObjectCounter = FindObjectOfType <GameObjectCounter>();
        playerLifeManager.playerUIPanel = playerUIPanel;
        playAgainPanel.SetActive(false);
        playerUIPanel.SetActive(false);
    }
Ejemplo n.º 10
0
    // Use this for initialization
    void Start()
    {
        refHpString = GameObject.Find("HpString");
        refText     = GetComponent("Text") as Text;
        offset.x    = 62;
        offset.y    = 1;
        GameObject tmp = GameObject.Find("PlayerStatus");

        if (tmp)
        {
            refPlayerStatus = tmp.GetComponent <status>();
        }
        refPlayer      = GameObject.Find("Player");
        refLifeManager = GameObject.Find("Player").GetComponent <PlayerLifeManager> ();
    }
Ejemplo n.º 11
0
    void OnTriggerEnter(Collider other)
    {
        if (IsServer)
        {
            if (other.gameObject.tag.Equals("Player"))
            {
                playerLifeManager = other.gameObject.GetComponent <PlayerLifeManager>();
                playerLifeManager.HealPlayer(healAmount);
                if (spawner != null)
                {
                    spawner.CollectableTaken();
                }

                Destroy(gameObject, 0);
            }
        }
    }
Ejemplo n.º 12
0
 protected override void OnCollisionEnter2D(Collision2D collision)
 {
     if (IsSpike(collision) && collision.gameObject.CompareTag("Player"))
     {
         Vector3 bumpDirection = (collision.transform.position - transform.position).normalized;
         move.Bump(-bumpDirection);
     }
     else if (collision.gameObject.CompareTag("Player"))
     {
         PlayerLifeManager player        = collision.gameObject.GetComponent <PlayerLifeManager>();
         Vector3           bumpDirection = (player.transform.position - transform.position).normalized;
         player.TakeDamage(damage);
         player.GetComponent <Movement>().Bump(bumpDirection);
         HintUI.instance.SetText("Ouch!");
         AudioManager.instance.Play("Bite");
     }
 }
Ejemplo n.º 13
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);
            }
        }
    }
Ejemplo n.º 14
0
 // Start is called before the first frame update
 void Awake()
 {
     _gameManager = GameObject.Find("Game Manager");
     _agent       = GetComponent <NavMeshAgent>();
     if (_agent)
     {
         _moveToPath  = new NavMeshPath();
         _agent.speed = movementSpeed;
     }
     _plManager    = _gameManager.GetComponent <PlayerLifeManager>();
     _maxHealth    = health;
     _gold         = _gameManager.GetComponent <GoldManager>();
     _roundManager = _gameManager.GetComponent <RoundManager>();
     _curRound     = _roundManager._currentRound;
     healthbar     = healthbarPooler.GetPooledObject().GetComponent <Slider>();
     healthbar.transform.SetParent(GameObject.Find("Canvas").GetComponent <Transform>(), false);
     lookingForTower = false;
 }
Ejemplo n.º 15
0
 // Start is called before the first frame update
 void Start()
 {
     rotationAngle     = gameObject.transform.rotation.eulerAngles.z;
     rb                = GetComponent <Rigidbody>();
     playerLifeManager = FindObjectOfType <PlayerLifeManager>();
 }
Ejemplo n.º 16
0
    void Start()
    {
        Application.targetFrameRate = 60;
        //S'il y a une erreur ici s'assurer que le prefab "Balancing" est bien dans la scène
        balanceData = GameObject.Find("Balancing").GetComponent <Balancing>();

        groundedControlForce = balanceData.groundedControlForce;
        hookMovementForce    = balanceData.hookMovementForce;
        airControlForce      = balanceData.airControlForce;
        dashTime             = balanceData.dashTime;
        dashForce            = balanceData.dashForce;
        dashCDTime           = balanceData.attackCDTime;
        dragEndOfDash        = balanceData.dragEndOfDash;
        inDashStatusTime     = balanceData.inDashStatusTime;

        rigid                   = this.GetComponent <Rigidbody2D>();
        speedEffectScript       = speedEffect.GetComponent <SpeedEffect>();
        dashReadyEffect         = transform.GetChild(2).gameObject;
        dashEffectColor         = dashReadyEffect.GetComponent <ParticleSystem>().main;
        dashEffectColorLifeTime = dashReadyEffect.GetComponent <ParticleSystem>().colorOverLifetime;
        lifeManager             = GetComponent <PlayerLifeManager>();

        dashRecovery = Resources.Load <GameObject>("Prefabs/Dash/DashRecovery");

        gravity = rigid.gravityScale;

        playerSprite = GetComponent <SpriteRenderer>().sprite;

        switch (playerNumber)
        {
        case "_P1":
            gameObject.layer = 8;
            break;

        case "_P2":
            gameObject.layer = 9;
            break;

        case "_P3":
            gameObject.layer = 10;
            break;

        case "_P4":
            gameObject.layer = 11;
            break;

        default:
            break;
        }

        lastFramePosition = transform.position;

        //Switch gérant la couleur du dash effect
        switch (playerSprite.name)
        {
        case "0":
            dashEffectColor.startColor = new Color(1, 1, 0);
            colorDashEffect[1].color   = new Color(.9215686f, 0.7294118f, 0.345098f);
            break;

        case "1":
            dashEffectColor.startColor = new Color(0.9960784f, 0.5686275f, 0.7568628f);
            colorDashEffect[1].color   = new Color(0.9960784f, 0.5686275f, 0.7568628f);
            break;

        case "2":
            dashEffectColor.startColor = new Color(0, 1, 1);
            colorDashEffect[1].color   = new Color(0.2313726f, 0.572549f, 0.9882353f);
            break;

        case "3":
            dashEffectColor.startColor = new Color(.3f, 1, 0);
            colorDashEffect[1].color   = new Color(0.4627451f, 0.7372549f, 0.2862745f);
            break;

        case "4":
            dashEffectColor.startColor = new Color(1, 0, 0);
            colorDashEffect[1].color   = new Color(0.9098039f, 0.1176471f, 0.3176471f);
            break;

        default:
            print("Default case switch start PlayerMovement.cs");
            break;
        }
        alphaDashEffect[0].alpha = 1;
        alphaDashEffect[0].time  = 0;
        alphaDashEffect[1].alpha = 1;
        alphaDashEffect[1].time  = 1;
        colorDashEffect[0].color = new Color(1, 1, 1);
        colorDashEffect[0].time  = 0;
        colorDashEffect[1].time  = 1;
        Gradient grad = new Gradient();

        grad.SetKeys(colorDashEffect, alphaDashEffect);
        dashEffectColorLifeTime.color = grad;
    }
Ejemplo n.º 17
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)));
                    }
                }
            }
        }
    }
Ejemplo n.º 18
0
 private void Start()
 {
     StartCoroutine(ExpirationTimer());
     playerLifeManager = FindObjectOfType <PlayerLifeManager>();
 }
Ejemplo n.º 19
0
 private void Awake()
 {
     _transform       = transform;
     _shootingManager = GetComponent <ShootingManager>();
     _lifeManager     = GetComponent <PlayerLifeManager>();
 }
Ejemplo n.º 20
0
 private void OnDestroy()
 {
     _instance = null;
 }
Ejemplo n.º 21
0
        public override void MakeObjects()
        {
            Size  windowSize       = WinformRender.Instance.NowForm.Size;
            Size  gameSize         = new Size(224, 304);
            Vec2D playerStartPoint = new Vec2D(gameSize.Width / 2, gameSize.Height - 32);


            // 백그라운드 오브젝트 생성
            BackGround backGround = new BackGround();

            backGround.Name = "BackGround";
            Vec2D point = new Vec2D(224 / 2, 320 / 2);

            backGround.transform.position = point;
            AddObject(backGround);

            backGround = new BackGround();
            point      = new Vec2D(224 / 2, 320 / 2 - 320 + 8);
            backGround.transform.position = point;
            AddObject(backGround);

            backGround = new BackGround();
            point      = new Vec2D(224 / 2, 320 / 2 - 640 + 16);
            backGround.transform.position = point;
            AddObject(backGround);

            Size BackgroundSize = backGround.GetComponent <SpriteComponent>().Image.Size;

            // 플레이어 생성
            Player player = new Player();

            point = playerStartPoint;
            player.transform.position = point;
            InputComponent input = player.GetComponent <InputComponent>();

            if (input != null)
            {
                input.MaxWidth = gameSize.Width;
            }
            TargetScrolling targetScrolling = player.GetComponent <TargetScrolling>();

            if (targetScrolling != null)
            {
                targetScrolling.Destination = playerStartPoint;
            }
            AddObject(player);


            // 게임 중앙에 모이기 위한 위치 설정
            CompanyHeadquarter company = new CompanyHeadquarter();

            point = new Vec2D(224 / 2, 16 * 5);
            company.transform.position = point;
            AddObject(company);

            GameObject unitPosition;
            Vec2D      localPoint;

            int totalLine = 6;

            int[] enemyCountAtLine = new int[] { 4, 4, 8, 8, 10, 10 };

            // 여러개의 빈 오브젝트를 생성해서 위의 company의 자식으로 설정
            // 부모만 움직이면 자식도 움직이기 설정
            for (int t = 0; t < totalLine; t++)
            {
                for (int i = 0; i < enemyCountAtLine[t]; i++)
                {
                    unitPosition = new GameObject();
                    company.transform.SetChild(unitPosition);
                    localPoint = new Vec2D(16 * i - (enemyCountAtLine[t] / 2 - 1) * 16 - 8, 16 * t - 40);
                    unitPosition.transform.localPosition = localPoint;
                    AddObject(unitPosition);
                }
            }

            EnemySpawner enemySpawner = new EnemySpawner();

            AddObject(enemySpawner);

            PlayerLifeManager playerLifeManager = new PlayerLifeManager();
            LifeManager       lifeManager       = playerLifeManager.GetComponent <LifeManager>();

            if (lifeManager != null)
            {
                lifeManager.playerhealth = player.GetComponent <HealthSystem>();
                lifeManager.player       = player;
            }
            AddObject(playerLifeManager);

            Text score = new Text();

            score.transform.position = new Vec2D(gameSize.Width / 10 * 4, 0);
            TextComponet textComponet = score.GetComponent <TextComponet>();

            AddObject(score);

            Text gameOver = new Text();

            gameOver.transform.position = new Vec2D(gameSize.Width / 10 * 3, gameSize.Height / 2);
            TextComponet textComponet2 = gameOver.GetComponent <TextComponet>();

            textComponet2.Text = "GameOver";
            gameOver.Enabled   = false;
            AddObject(gameOver);

            StageLevel stageLevel = new StageLevel();
            Vec2D      vec2D      = new Vec2D();

            vec2D.X = gameSize.Width;
            vec2D.Y = gameSize.Height - 8;
            stageLevel.transform.position = vec2D;
            stageLevel.Enabled            = false;
            AddObject(stageLevel);

            UIManagerObject uIManagerObject = new UIManagerObject();
            UIManager       uIManager       = uIManagerObject.GetComponent <UIManager>();

            if (textComponet != null && uIManager != null)
            {
                uIManager.scoreText        = textComponet;
                uIManager.gameOverObject   = gameOver;
                uIManager.stageLevelObejct = stageLevel;
            }
            AddObject(uIManagerObject);


            WayPointManager wayPointManager = new WayPointManager();
            WayPoints       wayPoints       = wayPointManager.GetComponent <WayPoints>();

            wayPoints.GameSize = new Vec2D(gameSize.Width, gameSize.Height);
            AddObject(wayPointManager);

            GameManagerObject gameManagerObject = new GameManagerObject();

            AddObject(gameManagerObject);
        }
Ejemplo n.º 22
0
 private void Start()
 {
     player = Player.instance.GetComponent <PlayerLifeManager>();
     player.onHealthChangedCallback += UpdateUI;
 }
Ejemplo n.º 23
0
    // Use this for initialization
    void Start()
    {
        /*
         * hookInCD = false;
         * hooked = false;*/

        //S'il y a une erreur ici s'assurer que le prefab "Balancing" est bien dans la scène
        balanceData           = GameObject.Find("Balancing").GetComponent <Balancing>();
        timeHooked            = balanceData.TimeHooked;
        retractationStep      = balanceData.retractationStep;
        timeBtwShots          = balanceData.timeBtwShots;
        knockBackTime         = balanceData.knockBackTime;
        knockBackBlade1       = balanceData.knockBackBlade1;
        knockBackBlade2       = balanceData.knockBackBlade2;
        knockBackBlade3       = balanceData.knockBackBlade3;
        blade1damage          = balanceData.blade1Damage;
        blade2damage          = balanceData.blade2Damage;
        blade3damage          = balanceData.blade3Damage;
        hookRecuperationSpeed = balanceData.hookRecuperationSpeed;
        criticalSpeed         = balanceData.criticalSpeed;
        timeBeforeDestroy     = balanceData.timeRopeCut;
        attackTime            = balanceData.attackTime;
        freezeFrameDuration   = balanceData.freezeFrameDuration;
        knockBackAttacker     = balanceData.knockBackAttacker;

        timeRemaining = timeHooked;

        //Récupère tout les éléments du gameObject
        bladeColliders            = GetComponents <PolygonCollider2D>();
        blade1Collider            = bladeColliders[2];
        blade2Collider            = bladeColliders[1];
        blade3Collider            = bladeColliders[0];
        bladeRenderer             = transform.GetChild(1).GetComponent <SpriteRenderer>();
        playerMovement            = player.GetComponent <PlayerMovement>();
        playerNumber              = playerMovement.playerNumber;
        playerMovement.hookScript = this;
        spriteRenderer            = GetComponent <SpriteRenderer>();
        lifeManager             = player.GetComponent <PlayerLifeManager>();
        lifeManager.spriteArrow = spriteRenderer;
        lifeManager.hookScript  = this;
        hookUnvailableAnimator  = hookUnvailable.GetComponent <Animator>();
        hookUnvailable.gameObject.SetActive(false);

        //Détruit le line renderer s'il existait déjà pour éviter le duplicata
        // if (this.transform.parent.transform.childCount == 5)
        //     Destroy(this.transform.parent.transform.GetChild(4).gameObject);

        //Crée le line renderer et le configure
        line = new GameObject("Line").AddComponent <LineRenderer>(); //instantie un line renderer
        line.positionCount = 2;                                      //le nombre de point pour la ligne
        line.startWidth    = balanceData.lineWidth;                  // la largeur de la ligne
        line.endWidth      = balanceData.lineWidth;
        line.gameObject.SetActive(false);                            // désactive la ligne
        line.startColor = colorRope;
        line.endColor   = colorRope;
        line.GetComponent <Renderer>().material.shader = Shader.Find("Particles/Alpha Blended");
        line.GetComponent <Renderer>().material.color  = Color.black;// couleur du matérial
        line.transform.parent = gameObject.transform.parent;
        rope = Resources.Load <Texture>("ArrowSprites/Rope");
        line.material.SetTexture("_MainTex", rope);

        //Ajoute un collider à la corde ainsi que le script qui permet de la couper
        line.gameObject.AddComponent <BoxCollider2D>();
        line.gameObject.AddComponent <LineCutter>();
        line.gameObject.GetComponent <LineCutter>().hook = this;
        lineCollider           = line.GetComponent <BoxCollider2D>();
        lineCollider.isTrigger = true;
        line.gameObject.tag    = "Rope";
        line.sortingLayerName  = "Rope";

        //Charge les sprites en fonction du personnage sélectionné
        switch (player.GetComponent <SpriteRenderer>().sprite.name)
        {
        case "0":
            arrowSprite    = Resources.Load <Sprite>("ArrowSprites/Arrow0");
            hookheadSprite = Resources.Load <Sprite>("ArrowSprites/Hook0");
            colorRope      = new Color(.9215686f, 0.7294118f, 0.345098f);
            hitLittle      = Resources.Load <ParticleSystem>("Particles/HitLittle/HitLittleOrange");
            hitHard        = Resources.Load <ParticleSystem>("Particles/HitHard/HitHardOrange");
            break;

        case "1":
            arrowSprite    = Resources.Load <Sprite>("ArrowSprites/Arrow1");
            hookheadSprite = Resources.Load <Sprite>("ArrowSprites/Hook1");
            colorRope      = new Color(0.9960784f, 0.5686275f, 0.7568628f);
            hitLittle      = Resources.Load <ParticleSystem>("Particles/HitLittle/HitLittlePink");
            hitHard        = Resources.Load <ParticleSystem>("Particles/HitHard/HitHardPink");
            break;

        case "2":
            arrowSprite    = Resources.Load <Sprite>("ArrowSprites/Arrow2");
            hookheadSprite = Resources.Load <Sprite>("ArrowSprites/Hook2");
            colorRope      = new Color(0.2313726f, 0.572549f, 0.9882353f);
            hitLittle      = Resources.Load <ParticleSystem>("Particles/HitLittle/HitLittleBlue");
            hitHard        = Resources.Load <ParticleSystem>("Particles/HitHard/HitHardBlue");
            break;

        case "3":
            arrowSprite    = Resources.Load <Sprite>("ArrowSprites/Arrow3");
            hookheadSprite = Resources.Load <Sprite>("ArrowSprites/Hook3");
            colorRope      = new Color(0.4627451f, 0.7372549f, 0.2862745f);
            hitLittle      = Resources.Load <ParticleSystem>("Particles/HitLittle/HitLittleGreen");
            hitHard        = Resources.Load <ParticleSystem>("Particles/HitHard/HitHardGreen");
            break;

        case "4":
            arrowSprite    = Resources.Load <Sprite>("ArrowSprites/Arrow4");
            hookheadSprite = Resources.Load <Sprite>("ArrowSprites/Hook4");
            colorRope      = new Color(0.9098039f, 0.1176471f, 0.3176471f);
            hitLittle      = Resources.Load <ParticleSystem>("Particles/HitLittle/HitLittleYellow");
            hitHard        = Resources.Load <ParticleSystem>("Particles/HitHard/HitHardYellow");
            break;

        default:
            print("Default case switch start Hook.cs");
            break;
        }
        blade1Sprite = Resources.Load <Sprite>("ArrowSprites/Blade1");
        blade2Sprite = Resources.Load <Sprite>("ArrowSprites/Blade2");
        blade3Sprite = Resources.Load <Sprite>("ArrowSprites/Blade3");
        //Initialise le joueur avec la flèche et sans lame
        spriteRenderer.sprite = arrowSprite;
        Sheathe();

        //Fixe les différents layer en fonction du numéro du joueur
        switch (playerNumber)
        {
        case "_P1":
            line.gameObject.layer = 17;
            gameObject.layer      = 17;
            layerMaskLineCast     = (1 << 18) | (1 << 19) | (1 << 20) | (1 << 22) | (1 << 23) | (1 << 24) | (1 << 26);
            layerMaskOthersArrow  = (1 << 18) | (1 << 19) | (1 << 20);
            break;

        case "_P2":
            line.gameObject.layer = 18;
            gameObject.layer      = 18;
            layerMaskLineCast     = (1 << 17) | (1 << 19) | (1 << 20) | (1 << 21) | (1 << 23) | (1 << 24) | (1 << 26);
            layerMaskOthersArrow  = (1 << 17) | (1 << 19) | (1 << 20);
            break;

        case "_P3":
            line.gameObject.layer = 19;
            gameObject.layer      = 19;
            layerMaskLineCast     = (1 << 17) | (1 << 18) | (1 << 20) | (1 << 21) | (1 << 22) | (1 << 24) | (1 << 26);
            layerMaskOthersArrow  = (1 << 17) | (1 << 18) | (1 << 20);
            break;

        case "_P4":
            line.gameObject.layer = 20;
            gameObject.layer      = 20;
            layerMaskLineCast     = (1 << 17) | (1 << 18) | (1 << 19) | (1 << 21) | (1 << 22) | (1 << 23) | (1 << 26);
            layerMaskOthersArrow  = (1 << 17) | (1 << 18) | (1 << 19);
            break;

        default:
            print("Default case switch start Hook.cs");
            break;
        }
    }