- Home /
Make a bowling ball spin on a swipe path
I have the code to be able to find the swipe, but how do I go about making sure that my ball follows this curve?
Here is my SwipeCode LineRender.cs public class LineRender : MonoBehaviour {
public Color c1 = Color.red;
public Color c2 = Color.yellow;
private GameObject lineGO;
private LineRenderer lineRenderer;
private int i = 0;
void Start()
{
lineGO = new GameObject("Line");
lineGO.AddComponent<LineRenderer>();
lineRenderer = lineGO.GetComponent<LineRenderer>();
lineRenderer.material = new Material(Shader.Find("Mobile/Particles/Additive"));
lineRenderer.SetColors(c1, c2);
lineRenderer.SetWidth(0.3F, 0);
lineRenderer.SetVertexCount(0);
}
void Update()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if(touch.phase == TouchPhase.Moved)
{
lineRenderer.SetVertexCount(i+1);
Vector3 mPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 15);
lineRenderer.SetPosition(i, Camera.main.ScreenToWorldPoint(mPosition));
i++;
}
if(touch.phase == TouchPhase.Ended)
{
/* Remove Line */
lineRenderer.SetVertexCount(0);
i = 0;
}
}
else {
MouseSwipe();
}
}
void MouseSwipe(){
if(Input.GetMouseButton(0))
{
lineRenderer.SetVertexCount(i+1);
Vector3 mPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 15);
lineRenderer.SetPosition(i, Camera.main.ScreenToWorldPoint(mPosition));
i++;
}
else{
/* Remove Line */
lineRenderer.SetVertexCount(0);
i = 0;
}
}
}
My Launch code for the ball public class DragLaunch : MonoBehaviour {
private Ball ball;
private float startTime, endTime;
private Vector3 dragStart, dragEnd;
// Use this for initialization
void Start () {
ball = GetComponent<Ball>();
}
public void MoveStart (float amount){
if(! ball.inPlay){
float xPos = Mathf.Clamp(ball.transform.position.x + amount, -50f, 50f);
float yPos = ball.transform.position.y;
float zPos = ball.transform.position.z;
ball.transform.position = new Vector3 (xPos,yPos, xPos);
}
}
public void DragStart(){
if(! ball.inPlay){
//Capture time & position of drag start
dragStart = Input.mousePosition;
startTime = Time.time;
}
}
public void DragEnd(){
if(! ball.inPlay){
//Launch the ball
dragEnd = Input.mousePosition;
endTime = Time.time;
float dragDuration = endTime - startTime;
float launchSpeedX = (dragEnd.x - dragStart.x) / dragDuration;
float launchSpeedZ = (dragEnd.y - dragStart.y) / dragDuration;
Vector3 launchVelocity = new Vector3(launchSpeedX, 0, launchSpeedZ);
ball.Launch(launchVelocity);
}
}
}
Comment
Answer by fani_2025 · Dec 04, 2017 at 04:40 PM
This is a nice post. Plz make your research more strong about coding. go bowling alley
Your answer
Follow this Question
Related Questions
How to move 2D object on touch in Unity 4.3 1 Answer
How can we ball move and rotate simultaneously? 3 Answers
Jittery rigidbody when two forces are applied 0 Answers
Finding the starting and ending coordinates of a flick / swipe on iOS 2 Answers
Flick swipe setup different between unity remote and android devices 0 Answers