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); }
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);; } } }