- Home /
Question by
GamesDeveloper12 · Aug 30, 2014 at 06:36 PM ·
rotationspritevector3quaternionangle
Rotate angle between two points
I have created a waypoint system to allow me to design levels and im trying to get a sprite to follow the path between these two points. If i position the points inline on the x-axis then the sprite is drawn correctly as shown below but if i move them to an angle the sprite is not drawn correctly. i have tried numerous variations of calculating the angle between them for the sprites rotation but nothing seems to work. I have included the code im currently using to draw the sprites.
void DrawPath()
{
for(int i=1;i<Checkpoints.Count;i++){
float xDiff = Checkpoints[i-1].transform.position.x - Checkpoints[i].transform.position.x;
float yDiff = Checkpoints[i-1].transform.position.z - Checkpoints[i].transform.position.z;
Vector3 pos = new Vector3(Checkpoints[i-1].transform.position.x-(xDiff/2), 1f, Checkpoints[i].transform.position.z + (yDiff / 2));
//float angle = GetAngle(Checkpoints[0], Checkpoints[1]);
float a = Mathf.Acos(Vector3.Dot(Checkpoints[i - 1].transform.position.normalized, Checkpoints[i].transform.position.normalized));
GameObject g = Instantiate(DirtTile, pos, Quaternion.Euler(new Vector3(90f, 0f, 0f))) as GameObject;
g.layer = LayerMask.NameToLayer("Game");
Vector3 scale = g.transform.localScale;
if (Checkpoints[i - 1].transform.position.x >= Checkpoints[i].transform.position.x - 1 && Checkpoints[i - 1].transform.position.x <= Checkpoints[i].transform.position.x + 1)
{
scale.y = yDiff;
}
else
{
scale.x = xDiff;
}
g.transform.localScale = scale;
}
}
screenshot2.png
(12.8 kB)
screenshot3.png
(5.3 kB)
Comment