Пример #1
0
        void InitProxy()
        {
            Destroy(movement); movement = null;
            Destroy(fire); fire         = null;
            Destroy(damage); damage     = null;
            Destroy(boosterController); boosterController = null;
            Destroy(rigidBody); rigidBody   = null;
            Destroy(collider2d); collider2d = null;

            // Replace PlayerName
            PlayerName = ScriptableObject.CreateInstance <StringVariable>();
            GetComponentInChildren <TextReplacer>().Variable = PlayerName;

            // Replace IsDead
            proxy.IsDead    = ScriptableObject.CreateInstance <BoolVariable>();
            IsDead.Variable = proxy.IsDead;

            // Replace WalkSpeed
            movement.WalkSpeed          = ScriptableObject.CreateInstance <FloatVariable>();
            boosterController.WalkSpeed = movement.WalkSpeed;

            // Replace Dash Rate
            movement.DashRate          = ScriptableObject.CreateInstance <FloatVariable>();
            boosterController.DashRate = movement.DashRate;

            // Replace FireRate
            weaponController.FireRate = ScriptableObject.CreateInstance <FloatVariable>();
            fire.FireRate.Variable    = weaponController.FireRate;
        }
Пример #2
0
        void Awake()
        {
            PV                = GetComponent <PhotonView>();
            proxy             = GetComponent <CharacterProxy>();
            movement          = GetComponent <CharacterMovement>();
            fire              = GetComponent <CharacterFire>();
            damage            = GetComponent <CharacterDamage>();
            boosterController = GetComponent <BoosterController>();
            weaponController  = GetComponent <WeaponController>();
            rigidBody         = GetComponent <Rigidbody2D>();
            collider2d        = GetComponent <Collider2D>();

            if (PV.IsMine)
            {
                InitLocal();
            }
            else
            {
                InitProxy();
            }

            PlayerName.Value = PV.Owner.NickName;
            NameChangeEvent.Raise();

            isAlreadyDead = false;
        }
        void OnCollisionEnter2D(Collision2D collision)
        {
            CharacterDamage character = collision.collider.GetComponent <CharacterDamage>();

            if (character != null)
            {
                character.ReceiveDamage(actorNumber, this, damage);
            }

            if (bounceCountLeft == bounceCount) // we remove sender immunity at first bounce
            {
                if (ignoreColliders != null)
                {
                    foreach (Collider2D collider in ignoreColliders)
                    {
                        Physics2D.IgnoreCollision(collider, ownCollider, false);
                    }
                }
            }

            if (bounceCountLeft > 0)
            {
                Vector2 newDirection = Vector2.Reflect(direction, collision.GetContact(0).normal);
                direction          = newDirection;
                rigidBody.velocity = direction * speed;
                bounceCountLeft--;
            }
            else
            {
                gameObject.SetActive(false);
            }
        }
        void OnCollisionEnter2D(Collision2D collision)
        {
            if (!hasStopped)
            {
                hasStopped = true;

                CharacterDamage character = collision.collider.GetComponent <CharacterDamage>();
                if (character != null)
                {
                    character.ReceiveDamage(actorNumber, this, damage);
                }
                else
                {
                    gameObject.layer   = LayerMask.NameToLayer("Sticky");
                    rigidBody.bodyType = RigidbodyType2D.Kinematic;
                    rigidBody.velocity = Vector2.zero;

                    if (ignoreColliders != null)
                    {
                        foreach (Collider2D collider in ignoreColliders)
                        {
                            Physics2D.IgnoreCollision(collider, ownCollider, false);
                        }
                    }
                }
            }
        }
        void OnCollisionEnter2D(Collision2D collision)
        {
            CharacterDamage character = collision.collider.GetComponent <CharacterDamage>();

            if (character != null)
            {
                character.ReceiveDamage(actorNumber, this, damage);
            }
            else
            {
            }
            gameObject.SetActive(false);
        }