I don't recommend doing it this way but just for the sake of your question.
Render the canvas to the world space. To detect the collision between the UI image and Sprite, based off of what you see on the game view rather than scene view.
However, this will displace all the objects in your canvas so it wont be shown on the game window anymore and you will ...
There's probably a more elegant solution, but the way I would do this is to attach a script to the UI that needs to be collided with.
This script will calculate the screen-space to world space coordinates of the UI element. Then it will create a box collider with the dimensions of the UI element in world space, making its Z component very long so it ...
Adding forces to a rigidbody won't change its velocity until the phyiscs engine runs another update, which happens betweeen two calls to a FixedUpdate method in your own code.
But if you want to predict the velocity of a body after applying a force, you can do so using Newton's formula force = mass * acceleration, or acceleration = force / mass.
When you add force you are modifying the acceleration, which will in turn change velocity as time progresses.
You have added and subtracted force in the same instant, without allowing time for the newly changed rate of acceleration to modify the velocity. Add some brief sleeps in your code and you will see the change in velocity.
No, it can't.
Unity won't allow you to add both a Rigidbody and a Rigidbody2D to the same game object:
It also won't allow you to add both a 3d Collider and a 2d Collider:
What you can have, though, is objects with 3d colliders and other objects with 2d colliders in the same scene. But those objects won't interact with each other in any way. They will ...