unity2d adjustable power meter
i am making a game where i require a power meter. i am using drag and shoot method, and have LineRenderer as my trajectory. basically when the player click and drag on the screen the ball moves in the direction it’s s dragged (just like bow and arrow). i want to display a power meter so that players can adjust the power before they shoot. i have few approaches but they don’t give what i want, in some cases i get negative values and in some cases i get x and a y value. how can i achieve this functionality? can you please have look and suggest what am doing wrong. thank you
``` private void Update() { if (onGround && ballMoveable) {
if (Input.GetMouseButtonDown(0))
{
startPoint = cam.ScreenToWorldPoint(Input.mousePosition);
startPoint.z = 2;
}
if (Input.GetMouseButton(0))
{
currentPoint = cam.ScreenToWorldPoint(Input.mousePosition);
currentPoint.z = 2;
tl.RenderLine(startPoint, currentPoint);
force = new Vector2(Mathf.Clamp(startPoint.x - currentPoint.x, minPower.x, maxPower.x), Mathf.Clamp(startPoint.y - currentPoint.y, minPower.y, maxPower.y));
//powerDisplay = Vector2.ClampMagnitude(startPoint - currentPoint, power);
float powerDisplayX = Mathf.Clamp(startPoint.x - currentPoint.x, 0, power);
float powerDisplayY = Mathf.Clamp(startPoint.y - currentPoint.y, 0, power);
powerDisplay = powerDisplayX + powerDisplayY;
Debug.Log(powerDisplay);
//powerDisplay = force.x + force.y * power;
//if (powerDisplay < 0)
//{
// powerDisplay = -powerDisplay;
//}
}
if (Input.GetMouseButtonUp(0))
{
endPoint = cam.ScreenToWorldPoint(Input.mousePosition);
endPoint.z = 2;
//force = new Vector2(Mathf.Clamp(startPoint.x - endPoint.x, minPower.x, maxPower.x), Mathf.Clamp(startPoint.y - endPoint.y, minPower.y, maxPower.y));
rb.AddForce(force * power, ForceMode2D.Impulse);
tl.EndLine();
Debug.Log(force * power);
}
}
if (facingRight == false && startPoint.x > currentPoint.x)
{
Flip();
}
else if (facingRight && startPoint.x < currentPoint.x)
{
Flip();
}
}```
Comment