How to make these controls like in flippy Bottle game?
You swipe and bottle flips depending on swiping angle and power.
C# Script will be much appreciated.
I’m using 2 scripts and it’s fine :): (i’m working on 2d game)
//MouseTracking
public Vector2 forceAdd;
Vector3 forceAdd2D;
Vector3 firstMouseLocation;
Vector3 afterMouseLocation;
void Update()
{
Debug.Log(cubeForce);
if (Input.GetMouseButtonDown(1))
{
firstMouseLocation = Input.mousePosition;
}
if (Input.GetMouseButtonUp(1))
{
afterMouseLocation = Input.mousePosition;
forceAdd3D = afterMouseLocation - firstMouseLocation;
}
forceAdd = new Vector2(forceAdd3D.x, forceAdd3D.y);
}
//Control
Rigidbody2D rb2;
MouseTracking MouseTrack;
bool canRotate;
private void Start()
{
rb2 = GetComponent<Rigidbody2D>();
MouseTrack = GetComponent<MouseTracking>();
}
private void Update()
{
Vector2 jumpForce = MouseTrack.forceAdd;
if (Input.GetMouseButtonUp(1))
{
rb2.AddForce(jumpForce);
canRotate = true;
}
if (canRotate)
{
if (jumpForce.x > 0)
{
transform.Rotate(0, 0, jumpForce.y * Time.fixedDeltaTime);
}
if (jumpForce.x < 0)
{
transform.Rotate(0, 0, jumpForce.y * Time.fixedDeltaTime * -1);
}
}
}
private void OnCollisionEnter2D(Collision2D ground)
{
if (ground.gameObject.tag == "Ground")
{
canRotate = false;
}
else
{
canRotate = true;
}
}
*My English is “too” dumb
@Krakra,I using 2 scripts and work very nice
//MouseTracking
Vector3 forceAdd3D;
Vector3 firstMouseLocation;
Vector3 afterMouseLocation;
void Update()
{
Debug.Log(cubeForce);
if (Input.GetMouseButtonDown(1))
{
firstMouseLocation = Input.mousePosition;
}
if (Input.GetMouseButtonUp(1))
{
afterMouseLocation = Input.mousePosition;
forceAdd3D = afterMouseLocation - firstMouseLocation;
}
forceAdd = new Vector2(cubeForce3D.x, cubeForce3D.y);
}
//Control
Rigidbody2D rb2;
MouseTracking MouseTrack;
bool canRotate;
private void Start()
{
rb2 = GetComponent<Rigidbody2D>();
MouseTrack = GetComponent<MouseTracking>();
}
private void Update()
{
Vector2 jumpForce = MouseTrack.forceAdd;
if (Input.GetMouseButtonUp(1))
{
rb2.AddForce(jumpForce);
canRotate = true;
}
if (canRotate)
{
if (jumpForce.x > 0)
{
transform.Rotate(0, 0, jumpForce.y * Time.fixedDeltaTime);
}
if (jumpForce.x < 0)
{
transform.Rotate(0, 0, jumpForce.y * Time.fixedDeltaTime * -1);
}
}
}
private void OnCollisionEnter2D(Collision2D ground)
{
if (ground.gameObject.tag == "Ground")
{
canRotate = false;
}
else
{
canRotate = true;
}
}
(My English is “too” dumb)