public Animation(Func <Sprite[]> animFrameFunc, GBAVV_Map2D_Animation crashAnim, int xPos, int yPos) { AnimFrameFunc = animFrameFunc; CrashAnim = crashAnim; XPos = xPos; YPos = yPos; AnimHitBox = new Unity_ObjAnimationCollisionPart[] { new Unity_ObjAnimationCollisionPart() { Type = Unity_ObjAnimationCollisionPart.CollisionType.HitTriggerBox, XPosition = CrashAnim.HitBox.X, YPosition = CrashAnim.HitBox.Y, Width = CrashAnim.HitBox.Width + 1, Height = CrashAnim.HitBox.Height + 1, }, }; }
private void SetCollisionBox(Unity_ObjAnimationCollisionPart collision, SpriteRenderer collisionSpriteRenderer, Vector2 pivot) { var mirroredX = ObjData.FlipHorizontally; var mirroredY = ObjData.FlipVertically; Vector2 pos = new Vector2( ((collision.XPosition - pivot.x) * (mirroredX ? -1f : 1f) * ObjData.Scale + pivot.x) / (float)LevelEditorData.Level.PixelsPerUnit, (((-collision.YPosition - pivot.y) * (mirroredY ? -1f : 1f) * ObjData.Scale + pivot.y) / (float)LevelEditorData.Level.PixelsPerUnit)); collisionSpriteRenderer.transform.localPosition = new Vector3(pos.x, pos.y, collisionSpriteRenderer.transform.localPosition.z); collisionSpriteRenderer.transform.localScale = new Vector3( (collision.Width / (float)LevelEditorData.Level.PixelsPerUnit) * (mirroredX ? -1f : 1f), (collision.Height / (float)LevelEditorData.Level.PixelsPerUnit) * (mirroredY ? -1f : 1f)) * ObjData.Scale; // Set color depending on the collision type switch (collision.Type) { case Unity_ObjAnimationCollisionPart.CollisionType.AttackBox: collisionSpriteRenderer.color = new Color(1f, 0f, 0f, 0.4f); break; case Unity_ObjAnimationCollisionPart.CollisionType.SizeChange: case Unity_ObjAnimationCollisionPart.CollisionType.VulnerabilityBox: collisionSpriteRenderer.color = new Color(0f, 1f, 0f, 0.4f); break; case Unity_ObjAnimationCollisionPart.CollisionType.TriggerBox: collisionSpriteRenderer.color = new Color(1f, 0.7f, 0f, 0.4f); break; case Unity_ObjAnimationCollisionPart.CollisionType.HitTriggerBox: case Unity_ObjAnimationCollisionPart.CollisionType.ExitLevel: collisionSpriteRenderer.color = new Color(1f, 0f, 1f, 0.4f); break; case Unity_ObjAnimationCollisionPart.CollisionType.Gendoor: collisionSpriteRenderer.color = new Color(0f, 1f, 0.7f, 0.4f); break; default: throw new ArgumentOutOfRangeException(); } }