internal static (Type, Type) BumpableBlockEnemyTranslator(IGameObject mover, IGameObject receiver) { IEnemy enemyCast = (IEnemy)mover; IBumpable block = (IBumpable)receiver; return(enemyCast.GetType(), block.State.GetType()); }
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(); } }
public BlockIsNotBumpedState(IBumpable block) { this.block = block; }
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); } }
public BumpBlock(IBumpable block, CollisionData collisionData) { this.block = block; }