- Home /
Character rotation on foot?
Hello, I have a problem. When rotating my character he rotates on one foot. I want the rotation to be directly in the middle of him, My entire code is here:
#pragma strict
public var Dest : boolean = false;
var speed : float;
var rotateSpeed : float = 3.0;
var MisslePREF : Transform;
var jumpSpeed : float = 3.0;
var Health : int = 100;
var Mainplayer : Transform;
var CSpawn : Transform;
var DPlayer : Transform;
var isGrounded : boolean;
function Start () {
Screen.lockCursor = false;
Health = 100;
Physics.gravity = Vector3(0, -115.0, 0);
}
function Update (){
Screen.lockCursor = true;
if(Health <= 0){
Respawn();
}
Screen.lockCursor = true;
if(!animation.isPlaying){
animation.CrossFade ("fps_idle");
animation["fps_idle"].speed = 0.5;
}
if(Input.GetButton("forward")){
transform.position += transform.right;
animation["fps_run"].speed = 1;
animation.CrossFade("fps_run");
}
if(Input.GetButton("backward")){
transform.position -= transform.right;
animation.CrossFade("fps_back");
}
if(Input.GetButton("left")){
transform.position += transform.forward;
animation.CrossFade("fps_strafe_left");
}
if(Input.GetButton("right")){
transform.position -= transform.forward;
animation.CrossFade("fps_strafe_right");
}
if(Input.GetButtonDown("Jump")){
animation["fps_jump"].speed = 0.5;
transform.position += transform.up * jumpSpeed * Time.deltaTime * 15;
animation.Play("fps_jump");
}
transform.Rotate(0, Input.GetAxis ("Mouse X") * rotateSpeed, 0);
}
//rotate around y - axis
function OnCollisionEnter(col : Collision){
if(col.gameObject.tag == "missleP2"){
Health -=10;
}
if(col.gameObject.name == "LavaPlatform"){
Debug.Log("You Are Now Dead");
Health -=100;
}
if(col.gameObject.name == "fallout"){
Debug.Log("You Are Now Dead");
Health -=100;
}
}
function OnGUI(){
GUI.Label(Rect(1890,15,200,100), Health.ToString());
}
function Respawn(){
Health = 100;
transform.position = GameObject.Find("spawn1").transform.position;
}
Thanks in advance!
I would guess your characters pivot is not in the middle. $$anonymous$$aybe try rotating around the character's mesh's center. i.e. Renderer.bounds.center
Okay thank You alot. One question though is how would I go about rotating my character with that?
Answer by robertbu · Mar 21, 2013 at 06:12 PM
As @brainruggieri suggests, your pivot is likely in the wrong place. Possible fixes:
Reset the center in your modeling program
Use the script SetPivot script to reset the pivot.
Use an empty game object as the pivot. You can then either use Transform.RotateAround() to do the rotation, or make the character a child of the empty game object and rotate the empty game object.
Use Transform.RotateAround() and Renderer.bounds.center as @brianruggieri suggests.
Your answer
Follow this Question
Related Questions
Character Controller rotate unity 1 Answer
Character Axes Rotation Problem 3 Answers
Rotate cube in two direction not working 1 Answer
How to lock Y Rotation 3 Answers
2D : Rotation of Object With x-y Axis 2 Answers