I am unsure that you simply performed billiard or snooker earlier than.in the event you performed you need to learn about spin.
however anyway if you do not know about it you may see it in this video
I need to Implement spin like this sport

for instance distinction between Prime spin and Again spin is:


Spin behaviour
in the event you intention behind the ball you may shoot the ball in all course

in the event you intention closest to proper you may simply intention the appropriate

in the event you intention closest to left you may simply intention the left

I discovered a identical Concern that used Torque in stackoverflow however I do not know why did not work!
Prime Spin
GetComponent<Rigidbody>().AddTorque(Vector3.again * cueStrength );
GetComponent<Rigidbody>().AddForceAtPosition(cueStick.ahead * cueStrength,remodel.place,ForceMode.Acceleration);

Again Spin
GetComponent<Rigidbody>().AddTorque(Vector3.ahead * cueStrength );
GetComponent<Rigidbody>().AddForceAtPosition(cueStick.ahead * cueStrength,remodel.place,ForceMode.Acceleration);

I seen that flyordie’s snooker did not use AddTorque.so I do not want reply that Applied with AddTorque.
Replace
What I attempted
I add joystick to pick spin angle
then I apply spin drive ( It appears my spin works however typically did not work that I connected video in finish of my query).
that is my code:
utilizing System.Collections;
utilizing System.Collections.Generic;
utilizing UnityEngine;
public class MainBall : MonoBehaviour {
    non-public Vector3 FirstPos; // retailer first place as reset place
    public Rework SpinRoator; // spin rotator cylinder that present spin angle
    non-public Rigidbody rigidbody;
    public bool SpinUsed; // spin ought to use as soon as
    non-public float v2;
    non-public void Begin() {
        rigidbody = GetComponent<Rigidbody>();
        FirstPos = remodel.place;
    }
    //After purpose reset ball place
    public void ResetPos(){
        rigidbody.velocity = Vector3.zero;
        rigidbody.angularVelocity = Vector3.zero;
        remodel.place = FirstPos;
    }
    void SpinForce(){
        SpinUsed = true;
        float F = ComebackForce(); // calculate comeback drive
        StopBall(); // cease ball
        rigidbody.AddForce(SpinRoator.ahead*F);// apply spin drive
    }
    // calculating return drive after hitting f = m.a
    float ComebackForce(){
        var m = rigidbody.mass;
    var v1 = rigidbody.velocity.magnitude;
    var a = (v1 - v2) / Time.deltaTime;
        var F = m * a;
        v2 = rigidbody.velocity.magnitude;
        return F;
    }
    //cease ball
    public void StopBall(){
      rigidbody.velocity = Vector3.zero;
        rigidbody.angularVelocity = Vector3.zero;
    }
non-public void OnCollisionEnter(Collision different) {
    if(different.collider.tag == "Ball" || different.collider.tag == "ColorfulBall"){
    if(!SpinUsed){
    SpinForce();
    }
    }
}
}
however What’s Downside?!
It appears works appropriately however My Downside is usually Spin do not work appropriately you may see this video that reveal this drawback.my ball goes improper course of spin!!!
1.Ball goes Improper typically
as you may see in above gif ball goes improper course!!! ball ought to go alongside yellow cylinder however I do not know what’s drawback of my code!!!
1.Ball goes sluggish typically
one other drawback is comeback drive is sluggish typically!!!
I calculate comeback drive F = m.a however why is it sluggish?!


                                    






