- Home /
Quaternion.Euler and Quaternion.Slerp problem when using *= Add!!
I have this problem that I can´t get the Quaternion.Slerp too work as I wan´t! I don´t wan´t to use Quaternion.LookRotation(lookPos); like I did in the next example, both work´s but I want it to rotate around it self. How do I do that without to have to lookat something then it self. Like I sad Rotatet around it self! Hope you understand! Thank´s in advance for answers!
The project looks like this. 
A gameObject(player) in the center stands on Rotateobject(ground) platform and then you can touchmove the rotateobject to rotate! On the Rotateobject(ground) platform there is two cubewalls a bit from the player, on the Left and one on right side. On the playergameobject there is two cube´s with trigger attached, one on Left side and one on right side of the player, and I have two of this script on each cube trigger attached with a difference, one with rotateobject.transform.rotation *= Quaternion.Euler(7, 0, 0); and the other has (-7, 0, 0). So when I rotate the Rotateobject(ground) to the right with the touchmove on screen , then left wall hits the cube on left side of the player triggers this script so Rotateobject(ground) moves back a bit, and if I touchmove to left the rightwall triggers and moves Rotateobject(ground) back a bit.
 #pragma strict
 var rotateobject: Transform;
 
 
 function OnTriggerEnter (other : Collider) {
     if (other.CompareTag ("walls"))
     {
         rotateobject.transform.rotation *= Quaternion.Euler(7, 0, 0);
         print("Lhitwall");
     }
 }
next example
 #pragma strict
 var rotateobject : Transform;
 var lookrotpoint : Transform;
 var damping = 0.2;
 
 
 function OnTriggerEnter (other : Collider) {
     if (other.CompareTag ("walls"))
     {
            var lookPos = lookrotpoint.position - transform.position;
           lookPos.y = 0;
         var rotation = Quaternion.LookRotation(lookPos);
         rotation *= Quaternion.Euler(10, 0, 0); // this add a 10 degrees x rotation
         rotateobject.transform.rotation = Quaternion.Slerp(rotateobject.transform.rotation, rotation, Time.deltaTime * damping);
         print("Lhitwall");
     }
 }
Not sure if this is the intended behaviour or not but using *= will multiply the current value on the left by the value on the right. To add use +=
That's actually not the case with Quaternions. Quaternion multiplication is a non-commutative concatenation (effectively an addition) of Quaternions with each other. 
 
 There is no simple "addition" (using plus '+') for two Quaternions. 
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                