예제 #1
0
    public void FixedUpdate()
    {
        var thisContains = false;

        foreach (var particle in manager.Around(Position, ScaledSize))
        {
            Vector2 halfSize  = ScaledSize / 2;
            Vector2 direction = particle.particleInfo.Position - Position;
            direction.x = Mathf.Abs(direction.x);
            direction.y = Mathf.Abs(direction.y);
            if (direction.x < halfSize.x && direction.y < halfSize.y)
            {
                OnCollision.Invoke(particle);
                thisContains = true;
            }
        }
        if (thisContains ^ lastContains)
        {
            if (thisContains)
            {
                OnContains.Invoke();
            }
            else
            {
                OnContainsNot.Invoke();
            }
        }
        lastContains = thisContains;
    }
예제 #2
0
 void FixedUpdate()
 {
     foreach (var particle in manager.Around(Position, new Vector2(1, 1) * (Radius + manager.Param.Radius)))
     {
         if (Vector2.Distance(particle.particleInfo.Position, Position) <= Radius + manager.Param.Radius)
         {
             OnCollision.Invoke(particle);
         }
     }
 }