Пример #1
0
    void OnCollisionEnter(Collision collision)
    {
        if (collision.impulse.sqrMagnitude < MinImpulseToDestroy)
        {
            return;
        }

        var contact        = collision.GetContact(0);
        var boxCollider    = (BoxCollider)contact.thisCollider;
        var collisionPoint = transform.InverseTransformPoint(contact.point);
        var colliderType   = GetColliderType(boxCollider.size);

        var collidedVoxelLocalPosition = CalculateCollidedVoxelPosition(colliderType, collisionPoint, boxCollider.size);
        var collidedVoxelWorldPosition = transform.TransformPoint(collidedVoxelLocalPosition);

        DeleteCollider(collidedVoxelLocalPosition, (BoxCollider)contact.thisCollider, collision, colliderType);

        ShipEntity.DeleteVoxel(collidedVoxelWorldPosition);
        ShipEntity.AddDynamicVoxel(collidedVoxelWorldPosition, collision.relativeVelocity);
    }