- Home /
Trouble in calculating angle.
Hi.. I am a novice in Unity. I have a setup where in a scene there are multiple objects(Say balloons).The task is to navigate around the scene and click on the balloon. And here I need to calculate the angle between the heading direction and the object position. My game has a FPS Controller with 4 cameras, covering the 360 degree view of the scene. My calculated angles were coming correct without the FPS controller. However when I used the FPS controller the angle calculated are coming wrong. I think this is happening because the FPS controller itself can rotate.
private float calculateActualAngle(){
Vector2 reference = new Vector2 (0f, 1f) - new Vector2 (0f, 0f);
Vector2 balloonVector = new Vector2 (foundObject.transform.position.x, foundObject.transform.position.z) - new Vector2 (gameObject.transform.position.x,gameObject.transform.position.z);
float balloonAngle = Vector2.Angle (reference,balloonVector);
if (foundObject.transform.position.x < gameObject.transform.position.x)
barrelAngle = -barrelAngle;
Debug.Log ("The actual angle calculated is " + balloonAngle);
return balloonAngle;
}
Here gameObject is a FPSController with 4 cameras as children which covers the front left right and backside views. foundObject is obtained as follos in update() block.
void Update () {
MeshRenderer foundObjectMeshRenderer;
foreach(CB cb in componentCameraCB){
if(cb.objectHit()){
foundObject = cb.returnHitObject();
foundObjectMeshRenderer = foundObject.GetComponentInChildren<MeshRenderer>();
foundObjectMeshRenderer.material = foundObjectSkin;
foundObject.layer = foundLayer;
foundObject.GetComponentInChildren<Transform>().gameObject.layer = foundLayer;
for(int j = 0;j< 12;j++){
if(foundObject.transform.position == balloons[j].transform.position){
orderOfSelection.Add(balloons[j].name);
}
}
actualAngles.Add(calculateActualAngle());
count = count + 1;
setEnableCompass(true);
behaviour.enabled = false;
}
}
Please let me know where I am going wrong?
Show us a screenshot. Very important. Pretend it's a rule, even. I have no clue what you're describing once you start talking about multiple cameras covering 360. Best,
Your answer
![](https://koobas.hobune.stream/wayback/20220612101824im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How to block FPSController ? 1 Answer
360 Controller and angle problem 0 Answers
Can't properly duplicate an enemy AI 0 Answers
compass GUI jumps at angle 180. 0 Answers