- Home /
any alternative way to use two rotate function for same object??
// this class is to check the car (vehicle) orientation that is when car is going towards the ups and downs this class is used to adjust the position of the car
public class vehicleOrientation
{
public Transform target;
vector3 curNormal=vector3.up;
vector3 upAngle=vector3.up;
float curDir=0f;
void start(){}
void fixedupdate()
{
Raycasthit hit;
//get the axis from the ground for adust the car rotation
float turn=Input.GetAxis("horizontal")*300*time.deltaTime;
curDir=(curDir+turn)%360;
characterController controller=GetComponent<characterController>();
//check whether the car is in ups na it is used to adjust the position
if(pyhsics.raycast(transfom.localposition,-vector3.down,out hit))
{
float distanceToGround=hit.distance;
vector3 pos=transform.GetChild(0).position;
pos.y=pos.y+distanceToGround;
transform.getchild(0).position=pos;
//this part is used to adjust the rotation angle of the car
curNormal=vector3.lerp(upAngle,hit.Normal,10*time.deltatime);
quaterinion grdnTilt=quaterinion.FromToRotation(vector3.up,upangle);
transform.rotation=(grndTilt*quaternion.Eular(0,curDir,0));
target.Translate(0,transform.Getchild(0).position.y,0);
}
// its for whenever car moving downwards to adjust the angle
else if(physics.Raycast(transform.localposition,-curNormal,out hit))
{
curNormal=vector3.lerp(upAngle,hit.Normal,10*time.deltatime);
quaterinion grdnTilt=quaterinion.FromToRotation(vector3.up,upangle);
transform.rotation=(grndTilt*quaternion.Eular(0,curDir,0));
}
//check always the is in ground
if(!controller.isGrounded)
{
vector3 pos=transform.GetChild(0).position;
pos.y=0;
transform.GetChid(0).position=pos;
}
}
it is working properly but now i want to move the car based on the velocity... if am trying to rotate the car using left and right arrows it doesnt working....
my car moving script is //where rotation speed is 300
if(input.getGetkey(keycode.leftArrow))
transform.rotate(vector3.up*time.deltaTime*-rotationSpeed);
if(input.getGetkey(keycode.rightArrow))
transform.rotate(vector3.up*time.deltaTime*rotationSpeed);
now coming to my problem.....whenever am trying to move the car in left or right side it doesnt works because the transorm.rotation used two times....is there any possible way to rotate the car without affecting the transform.rotation function each other...or else give some simple coding to adjust the cars position in ups and downs of the terrain...by coding only am expecting...pls dont say use boxcollider...or gravity method...Thanks...am waiting.....
Your answer
![](https://koobas.hobune.stream/wayback/20220613163658im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
The way to approach DodgeRoll 0 Answers
Make Gameobject Stand On Surface Facing Certain Direction 0 Answers
Simulating different gravity, how to make falling platform fall in the desired direction? 1 Answer
Quaternion rotation with normals bug: Only works into one direction? 1 Answer
[solved] Get upward orientation of object and add scale value 1 Answer