Trajectory line with using joystick
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Bottle : MonoBehaviour
{
public PadStrength padStrength;
public PadDirection padDirection;
public int rotateSpeed;
private float strengthFactor = 10;
//angrybird
private Vector2 endPos;
public Vector2 initPos;
private Rigidbody2D rigidbody;
public GameObject trajectoryDot;
private GameObject[] trajectoryDots;
public int trajectoryNumber = 8;
void OnCollisionEnter2D(Collision2D col)
{
padStrength.isJumped = false;
}
void Start()
{
initPos = gameObject.transform.position;
rigidbody = GetComponent<Rigidbody2D>();
trajectoryDots = new GameObject[trajectoryNumber];
padDirection = GameObject.Find("Joystick").GetComponent<PadDirection>();
rigidbody.gravityScale = 0;
rotateSpeed = 300;
for (int i = 0; i < trajectoryNumber; i++)
{
trajectoryDots[i] = Instantiate(trajectoryDot, gameObject.transform);
}
}
void Update()
{
if (padDirection.isTouch) //click
{
endPos = initPos - padDirection.direction;
for (int i = 0; i < trajectoryNumber; i++)
{
trajectoryDots[i].transform.position = calculatePosition(i * 0.1f);
}
}
if (padStrength.isJumped) //leave
{
gameObject.transform.Rotate(Vector3.forward * rotateSpeed * Time.deltaTime, Space.World);
}
}
public void Jump() //leave
{
strengthFactor = padStrength.strength_time / 5;
Debug.Log(strengthFactor);
rigidbody.gravityScale = 1;
rigidbody.AddForce(padDirection.direction * strengthFactor, ForceMode2D.Impulse);
for (int i = 0; i < trajectoryNumber; i++)
{
Destroy(trajectoryDots[i]);
}
}
private Vector2 calculatePosition(float elapsedTime)
{
return endPos + //X0
new Vector2(padDirection.direction.x * strengthFactor, padDirection.direction.y * strengthFactor) * elapsedTime + //ut
0.5f * Physics2D.gravity * elapsedTime * elapsedTime;
}
}
