Exemplo n.º 1
0
        public override void OnCollision(CircleCollisionInfo collision, IBlockCollisionEffect blockHitEffect)
        {
            var effect = blockHitEffect as BlockCollisionEffect;

            if (effect.DoErase)
            {
                Destroy();
            }

            if (effect.RecieveDamage)
            {
                HP -= Mathf.Min(HP, Mathf.Min(effect.RecieveDamageMax, CollisionEffect.Attack));
            }

            if (effect.DoSpoit)
            {
                ButtleSystem.WaterSystem.AddSnow(Transform.position, HP);
                Destroy();
            }

            if (HP == 0)
            {
                Destroy();
            }
        }
Exemplo n.º 2
0
        public override void OnCollision(CircleCollisionInfo collision, IBlockCollisionEffect blockHitEffect)
        {
            var effect = (SampleBlockCollisionEffect)blockHitEffect;

            if (effect.DoErase == true)
            {
                Destroy();
            }
        }
Exemplo n.º 3
0
        public override void OnCollision(int arrayX, int arrayY, CircleCollisionInfo collision, IBallCollisionEffect ballHitEffect)
        {
            var effect = (SampleBallCollisionEffect)ballHitEffect;

            if (effect.DoErase == true && CantErase == false)
            {
                BlockCollider.EnableArray[arrayY, arrayX] = false;
            }
        }
        public void OnCollisionPhysicsCorrect(CircleCollisionInfo collision)
        {
            float   angle = collision.AngleToCircle;
            Vector2 dir   = new Vector2(Mathf.Cos(angle), Mathf.Sin(angle));

            float   velocityDot  = Vector2.Dot(dir, Velocity);
            Vector2 nextVelocity = Velocity - velocityDot * 2 * dir;

            Vector2 nextPosition = Transform.position + (Vector3)dir * collision.Distance * -1;

            PositionCorrect(nextPosition);
            VelocityCorrect(nextVelocity);
        }
Exemplo n.º 5
0
        public override void OnCollision(int arrayX, int arrayY, CircleCollisionInfo collision, IBallCollisionEffect ballHitEffect)
        {
            var effect = ballHitEffect as BallCollisionEffect;

            if (effect.DoErase)
            {
                this.Destroy();
            }

            if (BlockCollider is TextureBlockCollider)
            {
                var collider = BlockCollider as TextureBlockCollider;

                if (effect.Attack != 0)
                {
                    collider.AddDamage(arrayX, arrayY, effect.Attack);

                    ButtleSystem.WaterSystem.MakeWater(transform.position, effect.Attack);
                }
            }
        }
 public abstract void OnCollision(CircleCollisionInfo collision, IBlockCollisionEffect blockHitEffect);
 public abstract void OnCollision(
     int arrayX, int arrayY,
     CircleCollisionInfo collision, IBallCollisionEffect ballHitEffect);
 public GridInfo(ICircleCollider collider, DistanceInfo2D distanceInfo, int arrayX, int arrayY)
 {
     Collision = new CircleCollisionInfo(collider, distanceInfo);
     ArrayX    = arrayX;
     ArrayY    = arrayY;
 }