Ejemplo n.º 1
0
    public override void _IntegrateForces(Physics2DDirectBodyState state)
    {
        if (_picked)
        {
            var axis = (_touchPos - GlobalPosition + _offset.Rotated(GlobalRotation)).Normalized();

            // state.LinearVelocity =  new Vector2(Mathf.Min(Mathf.Abs(diff.x), _VelocityLimit) * Mathf.Sign(diff.x), Mathf.Min(Mathf.Abs(diff.y), _VelocityLimit) * Mathf.Sign(diff.y));
            // state.LinearVelocity *= _DragScale;
            state.AngularVelocity = GlobalRotation * -1.5f;
        }

        if (state.GetContactCount() >= 1)
        {
            _localCollisionPos    = state.GetContactLocalPosition(0);
            _collisionVelocityLen = state.LinearVelocity.Length();
        }

        base._IntegrateForces(state);
    }
Ejemplo n.º 2
0
    public override void _IntegrateForces(Physics2DDirectBodyState state)
    {
        for (int i = 0; i < state.GetContactCount(); i++)
        {
            var contactLocalPosition = state.GetContactLocalPosition(i);
            var tilesInRadius        = GetTilesInRadius(GetTileMap, contactLocalPosition, Radius);

            if (tilesInRadius.Any())
            {
                RunBangAnimation();
            }

            foreach (var cell in tilesInRadius)
            {
                GetTileMap.SetCell((int)cell.x, (int)cell.y, -1);
                GetAnotherTileMap(GetAnotherNumber()).SetCell((int)cell.x, (int)cell.y, -1);;
            }
        }
    }