Exemple #1
0
        internal static (Type, Type) BumpableBlockEnemyTranslator(IGameObject mover, IGameObject receiver)
        {
            IEnemy    enemyCast = (IEnemy)mover;
            IBumpable block     = (IBumpable)receiver;

            return(enemyCast.GetType(), block.State.GetType());
        }
Exemple #2
0
 public void Bump()
 {
     Systems.Events.TheInstance.BrickBump();
     if (!this.block.IsVisible)
     {
         ToggleVisibility();
         this.solid = true;
     }
     else if (this.block is IBumpable)
     {
         IBumpable bumpable = (IBumpable)block;
         bumpable.Bump();
     }
 }
Exemple #3
0
 public BlockIsNotBumpedState(IBumpable block)
 {
     this.block = block;
 }
Exemple #4
0
    private void OnCollisionEnter2D(Collision2D c)
    {
        if (c.relativeVelocity.magnitude > 15)
        {
            EmitSplatter(transform.position, new Vector2());
        }


        if (!c.GetContact(0).collider.GetComponent <Player>())
        {
            /*var spr = splatterSprites[Random.Range(0, splatterSprites.Length)];
             * var o = new GameObject();
             * var sr = o.AddComponent<SpriteRenderer>();
             * sr.sprite = spr;
             * sr.sortingLayerName = "Ground";
             * sr.maskInteraction = SpriteMaskInteraction.VisibleInsideMask;
             * o.transform.position = c.GetContact(0).point;*/
            Quaternion q  = Quaternion.Euler(0, 0, Random.Range(0f, 359f));
            GameObject go = Instantiate(splatterPrefab, c.GetContact(0).point, q);
            go.transform.localScale = Vector3.one * 1.4f;
            go.GetComponent <SpriteRenderer>().color = Manager.WorldOptions.playerColors[playerNumber - 1];
        }

        if (Manager.WorldOptions.bounceGameplay && rb.velocity.y > -1f && rb.velocity.y < 5f ||
            rb.velocity.magnitude < 3f
            )
        {
            rb.velocity          = new Vector2(rb.velocity.x, 0);
            shouldFollowVelocity = false;
            Land();
        }

        if (isBlocking)
        {
            rb.velocity *= new Vector2(1, Manager.WorldOptions.shieldVelocityCutoff);
        }

        if (c.GetContact(0).normal.y > 0.2f)
        {
            shouldFollowVelocity = false;
            coyoteJump           = true;
            usingJetpack         = false;
            jetpackAmount        = Manager.WorldOptions.MaxJetpackDuration;
            anim.SetBool("JumpAnim", false);
        }

        Transform other    = c.collider.transform;
        float     otherY   = other.position.y;
        IBumpable bumpable = other.GetComponent <IBumpable>();

        if (bumpable == null)
        {
            return;
        }


        if (otherY > transform.position.y && c.GetContact(0).normal.y < 0)
        {
            bumpable.Bumped(this, c.relativeVelocity);
        }
    }
Exemple #5
0
 public BumpBlock(IBumpable block, CollisionData collisionData)
 {
     this.block = block;
 }