“Einheit erhalten einen Winkel zwischen zwei Punkten” Code-Antworten

Winkel zwischen zwei Punkten Einheit

// Get Angle in Radians.
float AngleRad = Mathf. Atan2(Vect1. y - Vect2. y, Vect1. x - Vect2. x);
// Get Angle in Degrees.
float AngleDeg = (180 / Mathf. PI) * AngleRad;
Suman Majhi

Einheit erhalten einen Winkel zwischen zwei Vektoren

Small helper script to check angle between 2 objects in degrees (and in between 0-360).

It also includes test code for atan2Approximation, have not measured if there are any benefits using it..
Also note [ExecuteInEditMode], so it runs in editor without playmode.


using UnityEngine;
using System.Collections;

// helper script for testing angle calculation
// USAGE:
// – Attach this script to objectA and assign objectB as target
// – Then select objectA and move it around ObjectB and you can see angle values in inspector

[ExecuteInEditMode]
public class GetAngle : MonoBehaviour 
{
	public Transform target;
	public float angle;
	public float angleOpt;

	void Update () 
	{
		if (!target) return;

		var myPos = transform.position;
		myPos.y = 0;

		var targetPos = target.position;
		targetPos.y = 0;

		Vector3 toOther = (myPos – targetPos).normalized;

		angle = Mathf.Atan2(toOther.z, toOther.x) * Mathf.Rad2Deg + 180;
		angleOpt = atan2Approximation(toOther.z, toOther.x) * Mathf.Rad2Deg + 180;

		Debug.DrawLine (myPos, targetPos, Color.yellow);
	}


	float atan2Approximation(float y, float x) // http://http.developer.nvidia.com/Cg/atan2.html
	{
		float t0, t1, t2, t3, t4;
		t3 = Mathf.Abs(x);
		t1 = Mathf.Abs(y);
		t0 = Mathf.Max(t3, t1);
		t1 = Mathf.Min(t3, t1);
		t3 = 1f / t0;
		t3 = t1 * t3;
		t4 = t3 * t3;
		t0 =         – 0.013480470f;
		t0 = t0 * t4 + 0.057477314f;
		t0 = t0 * t4 – 0.121239071f;
		t0 = t0 * t4 + 0.195635925f;
		t0 = t0 * t4 – 0.332994597f;
		t0 = t0 * t4 + 0.999995630f;
		t3 = t0 * t3;
		t3 = (Mathf.Abs(y) > Mathf.Abs(x)) ? 1.570796327f–t3 : t3;
		t3 = (x < 0) ? 3.141592654f–t3:t3;
		t3 = (y < 0) ? –t3 : t3;
		return t3;
	}

}
Kevin

Einheit erhalten einen Winkel zwischen zwei Punkten

Vector3.Angle(v3A, v3B)
Crazy Cod

Ähnliche Antworten wie “Einheit erhalten einen Winkel zwischen zwei Punkten”

Fragen ähnlich wie “Einheit erhalten einen Winkel zwischen zwei Punkten”

Weitere verwandte Antworten zu “Einheit erhalten einen Winkel zwischen zwei Punkten” auf C#

Durchsuchen Sie beliebte Code-Antworten nach Sprache

Durchsuchen Sie andere Codesprachen