Help with angry birds style 2d pack
Hi all, I am making a game using the angry birds style game example from unity asset store. What I want to do is have a line or target that shows the direction the projectile will fire. It doesnt have to be 100% accurate just an indication of direction.
I have searched for answers but they all seem to involve loads of complicated maths equations is there a simple way to do this? I was thinking maybe a way of making a texture arrow and making that transform the opposite to the catapults "bands" eg as I pull the catapult back the texture would move opposite to the projectile showing direction.
can anyone help please?
using UnityEngine;
public class ProjectileDragging : MonoBehaviour {
public float maxStretch = 3.0f;
public LineRenderer catapultLineFront;
public LineRenderer catapultLineBack;
private SpringJoint2D spring;
private Transform catapult;
private Ray rayToMouse;
private Ray leftCatapultToProjectile;
private float maxStretchSqr;
private float circleRadius;
private bool clickedOn;
private Vector2 prevVelocity;
public AudioClip fire;
void Awake () {
spring = GetComponent <SpringJoint2D> ();
catapult = spring.connectedBody.transform;
}
void Start () {
LineRendererSetup ();
rayToMouse = new Ray(catapult.position, Vector3.zero);
leftCatapultToProjectile = new Ray(catapultLineFront.transform.position, Vector3.zero);
maxStretchSqr = maxStretch * maxStretch;
CircleCollider2D circle = collider2D as CircleCollider2D;
circleRadius = circle.radius;
}
void Update () {
if (clickedOn)
Dragging ();
if (spring != null) {
if (!rigidbody2D.isKinematic && prevVelocity.sqrMagnitude > rigidbody2D.velocity.sqrMagnitude) {
Destroy (spring);
rigidbody2D.velocity = prevVelocity;
}
if (!clickedOn)
prevVelocity = rigidbody2D.velocity;
LineRendererUpdate ();
} else {
catapultLineFront.enabled = false;
catapultLineBack.enabled = false;
}
}
void LineRendererSetup () {
catapultLineFront.SetPosition(0, catapultLineFront.transform.position);
catapultLineBack.SetPosition(0, catapultLineBack.transform.position);
catapultLineFront.sortingLayerName = "Foreground";
catapultLineBack.sortingLayerName = "Foreground";
catapultLineFront.sortingOrder = 3;
catapultLineBack.sortingOrder = 1;
}
void OnMouseDown () {
spring.enabled = false;
clickedOn = true;
}
void OnMouseUp () {
spring.enabled = true;
rigidbody2D.isKinematic = false;
clickedOn = false;
audio.PlayOneShot(fire);
}
void Dragging () {
Vector3 mouseWorldPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector2 catapultToMouse = mouseWorldPoint - catapult.position;
if (catapultToMouse.sqrMagnitude > maxStretchSqr) {
rayToMouse.direction = catapultToMouse;
mouseWorldPoint = rayToMouse.GetPoint(maxStretch);
}
mouseWorldPoint.z = 0f;
transform.position = mouseWorldPoint;
}
void LineRendererUpdate () {
Vector2 catapultToProjectile = transform.position - catapultLineFront.transform.position;
leftCatapultToProjectile.direction = catapultToProjectile;
Vector3 holdPoint = leftCatapultToProjectile.GetPoint(catapultToProjectile.magnitude + circleRadius);
catapultLineFront.SetPosition(1, holdPoint);
catapultLineBack.SetPosition(1, holdPoint);
}
}
hi may I ask why isn't my catapult working in unity? It cannot be stretch or pulled. I've checked the code and it is correct. Before I proceed to designing of the game, everything is okay. It works well but sometimes, it cannot be stretch or whatsoever. But after I improved on the design wise, it cannot be stretch. Do you know why? and just wanna ask if this happens on your game too. @jakovd
hi, may I ask you a question? I'm doing a game similar to angry birds. but, why isn't my catapult working in unity? It cannot be stretch or pulled. I've checked the code and it is correct. Before I proceed to designing of the game, everything seems okay. It works well but sometimes, it cannot be stretch or whatsoever too. But after I improved on the design wise, it cannot be stretch. Do you know why? and just wanna ask if this happens on your game too.
I don't know how you have you catapult setup or what code you are using so I can't really help, do you mean you can't drag the projectile?
Your answer
Follow this Question
Related Questions
predict line for a projectile 0 Answers
How can i make an object to change directions after hitting a wall? 2 Answers
LineRenderer is shooting in wrong direction. 1 Answer
Creating a simple character controller (Script provided) 1 Answer
Check if one gameobject in sight of another gameobject give wrong angle. 1 Answer