- Home /
Third Person Control Code Problem
I am currently doing A tutorial in which I am learning how to create a third person controller. It involved me taking a provided character from 3ds max and putting him in Unity. He already had all of the animation prepared when I brought him in. I then go to the input manager and did the following changes:
change the size from 17 to 3
Left the vertical and horizontal options the way they were.
renamed the Fire1 input to Run
Once that was done I went to the animation section of the FBX importer section under the inspector of the imported character (still in the project pane). Once in there I added the three animations, idle, walk, and run. I also stated which frames they started, and where they ended. With this done I took the character and placed him into my scene.
Now here is where I encounterd the problem. I was told to create a Java script and use the code provided. They gave me the code in sections so that they would tell me where it was and what function it did. But it proved to be confusing to follow, so I went to the bottom (where the whole script was written out) and I copied and pasted it into the java script. I then took the script and applied it into the character in the scene.
I read that I should be able to control the character and that he should be moving properly. But instead I could only rotate the character and not move him forward, backward, left, or right. So I am curious if there is something wrong with this code. Here it is for your viewing pleasure.
private var walkSpeed : float = 1.0; private var gravity = 100.0; private var moveDirection : Vector3 = Vector3.zero; private var charController : CharacterController;
function Start() { charController = GetComponent(CharacterController); animation.wrapMode = WrapMode.Loop; }
function Update () { if(charController.isGrounded == true) { if(Input.GetAxis("Vertical") > .1) { if(Input.GetButton("Run")) { animation.CrossFade("run"); walkSpeed = 4; } else { animation["walk"].speed = 1; animation.CrossFade("walk"); walkSpeed = 1; } } else if(Input.GetAxis("Vertical") < -.1) { animation["walk"].speed = -1; animation.CrossFade("walk"); walkSpeed = 1; } else { animation.CrossFade("idle"); }
// Create an animation cycle for when the character is turning on the spot if(Input.GetAxis("Horizontal") && !Input.GetAxis("Vertical")) { animation.CrossFade("walk"); }
transform.eulerAngles.y += Input.GetAxis("Horizontal");
// Calculate the movement direction (forward motion)
moveDirection = Vector3(0,0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
}
moveDirection.y -= gravity Time.deltaTime; charController.Move(moveDirection (Time.deltaTime * walkSpeed));
}
Also here is the link to the tutorial so that you could have a more solid idea as to how I did this. (I did everything it told me to do up to the point where I had to put the code in)
http://www.unitylabs.net/tutorials/character-controllers/third-person-character-controller
Answer by Uriel_96 · Nov 20, 2010 at 10:22 PM
in this simple video in the 6 minute has what your maybe looking http://www.youtube.com/watch?v=5wxe1IUu5QA This is different in the way that in yours you move to the right and left and in this video you rotate but consentrate in putting the go forward.