Character Axes Rotation Problem

Hello, I am kinda new on the Forums and stuff. But I am having a problem I am hoping someone knows the answer to, My problem is: I Need to rotate my Characters Axes to rotate based on the characters Rotation. And i want to do this with a script.

I have My Script Which i used a mouselook script i found on unify : http://wiki.unity3d.com/index.php/Main_Page

My Script is:

/// This is a modified javascript conversion of the Standard Assets MouseLook script.
/// Also added is functionallity of using a key to look up, down, left and right in addition to the Mouse.
/// Everything is on by default. You will want to turn off/on stuff depending on what you're doing.
 
/// You can also modify the script to use the KeyLook functions to control an object's rotation.
/// Try using MouseXandY on an object. Actually it works as is but you'll want to clean it up ;)
 
/// As of this version the key and mouse fight if used at the same time (ie up key and down mouse jitters).
 
/// Minimum and Maximum values can be used to constrain the possible rotation
 
/// To make an FPS style character:
/// - Create a capsule.
/// - Add a rigid body to the capsule
/// - Add the MouseLookPlus script to the capsule.
///   -> Set the script's Axis to MouseX in the inspector. (You want to only turn character but not tilt it)
/// - Add FPSWalker script to the capsule
 
/// - Create a camera. Make the camera a child of the capsule. Reset it's transform.
/// - Add the MouseLookPlus script to the camera.
///   -> Set the script's Axis to MouseY in the inspector. (You want the camera to tilt up and down like a head. The character already turns.)
 
/// - Name an Input element LookUp and assign positive and negative keys to look up and down by key
/// - Name an Input element LookAround and assign positive and negative keys to look left and right by key
 
    enum Axes {MouseXandY, MouseX, MouseY}
    var Axis : Axes = Axes.MouseXandY;
 
 	var movSpeed : float = 45.0f;
 	var isAnimation :  boolean;
 
    var sensitivityX = 15.0;
    var sensitivityY = 15.0;
 
    var minimumX = -360.0;
    var maximumX = 360.0;
 
    var minimumY = -60.0;
    var maximumY = 60.0;
 
    var rotationX = 0.0;
    var rotationY = 0.0;
 
    var lookSpeed = 2.0;
 
    function Update ()
    {
    
    if(Input.GetButton("Forward")){
    animation.CrossFade("hum_run");
    transform.position.x += movSpeed * Time.deltaTime;
    isAnimation = true;
    }
    if(Input.GetButton("Backward")){
    animation.CrossFade("hum_back");
    transform.position.x -= movSpeed * Time.deltaTime;
    isAnimation = true;
    }
    if(Input.GetButton("Right")){
    animation.CrossFade("hum_strafe_right");
    transform.position.y += movSpeed * Time.deltaTime;
    isAnimation = true;
    }
    if(Input.GetButton("Left")){
    animation.CrossFade("hum_strafe_left");
    transform.position.y -= movSpeed * Time.deltaTime;
    isAnimation = true;
    }
    if(Input.GetButton("Fire1")){
    animation.CrossFade("hum_attack_1");
    isAnimation = true;
    }
    if(!isAnimation){
    animation.CrossFade("hum_idle");
    }
    if(Input.GetButton("Jump")){
    animation.CrossFade("hum_jump");
    }
    
    
        if (Axis == Axes.MouseXandY)
        {
            // Read the mouse input axis
            rotationX += Input.GetAxis("Mouse X") * sensitivityX;
            rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
 
            // Call our Adjust to 360 degrees and clamp function
            Adjust360andClamp();
 
            // Most likely you wouldn't do this here unless you're controlling an object's rotation.
            // Call our look left and right function.
            KeyLookAround();
 
            // Call our look up and down function.
            KeyLookUp();
 
            // If the user isn't pressing a key to look up, transform our X angle to the mouse.
            if (!Input.GetAxis("LookAround"))
            {
                // If you don't want to allow a key to affect X, keep this line but take it out of the if
                transform.localRotation = Quaternion.AngleAxis (rotationX, Vector3.up);
            }
 
            // If the user isn't pressing a key to look up, transform our Y angle to the mouse.
            if (!Input.GetAxis("LookUp"))
            {
                // Multiply the Quaterion so we don't loose our X we just transformed
                // If you don't want to allow a key to affect Y, keep this line but take it out of the if
                transform.localRotation *= Quaternion.AngleAxis (rotationY, Vector3.left);
            }
        }
        else if (Axis == Axes.MouseX)
        {
            // Read the mouse input axis
            rotationX += Input.GetAxis("Mouse X") * sensitivityX;
 
            // Call our Adjust to 360 degrees and clamp function
            Adjust360andClamp();
 
            // if you're doing a standard X on object Y on camera control, you'll probably want to 
            // delete the key control in MouseX. Also, take the transform out of the if statement.
            // Call our look left and right function.
            KeyLookAround();
 
            // Call our look up and down function.
            KeyLookUp();
 
            // If the user isn't pressing a key to look up, transform our X angle to the mouse.
            if (!Input.GetAxis("LookAround"))
            {
                //If you don't want to allow a key to affect X, keep this line but take it out of the if
                transform.localRotation = Quaternion.AngleAxis (rotationX, Vector3.up);
            }
 
        }
        else
        {
            // Read the mouse input axis
            rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
 
            // Call our Adjust to 360 degrees and clamp function
            Adjust360andClamp();
 
            // Call our look left and right function.
            KeyLookAround();
 
            // Call our look up and down function.
            KeyLookUp();
 
            // If the user isn't pressing a key to look up, transform our Y angle to the mouse
            if (!Input.GetAxis("LookUp"))
            {
                // If you don't want to allow a key to affect Y, keep this line but take it out of the if
                transform.localRotation = Quaternion.AngleAxis (rotationY, Vector3.left);
            }
 
        }
    }
 
    function KeyLookAround ()
    {
//      If you're not using it, you can delete this whole function. 
//      Just be sure to delete where it's called in Update.
 
        // Read the mouse input axis
        rotationX += Input.GetAxis("LookAround") * lookSpeed;
 
        // Call our Adjust to 360 degrees and clamp function
        Adjust360andClamp();
 
        // Transform our X angle
        transform.localRotation = Quaternion.AngleAxis (rotationX, Vector3.up);
    }
 
    function KeyLookUp ()
    {
//      If you're not using it, you can delete this whole function. 
//      Just be sure to delete where it's called in Update.
 
        // Read the mouse input axis
        rotationY += Input.GetAxis("LookUp") * lookSpeed;
 
        // Adjust for 360 degrees and clamp
        Adjust360andClamp();
 
        // Transform our Y angle, multiply so we don't loose our X transform
        transform.localRotation *= Quaternion.AngleAxis (rotationY, Vector3.left);
    }
 
    function Adjust360andClamp ()
    {
//      This prevents your rotation angle from going beyond 360 degrees and also 
//      clamps the angle to the min and max values set in the Inspector.
 
        // During in-editor play, the Inspector won't show your angle properly due to 
        // dealing with floating points. Uncomment this Debug line to see the angle in the console.
 
        // Debug.Log (rotationX);
 
        // Don't let our X go beyond 360 degrees + or -
        if (rotationX < -360)
        {
            rotationX += 360;
        }
        else if (rotationX > 360)
        {
            rotationX -= 360;
        }   
 
        // Don't let our Y go beyond 360 degrees + or -
        if (rotationY < -360)
        {
            rotationY += 360;
        }
        else if (rotationY > 360)
        {
            rotationY -= 360;
        }
 
        // Clamp our angles to the min and max set in the Inspector
        rotationX = Mathf.Clamp (rotationX, minimumX, maximumX);
        rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
    }
 
    function Start ()
    {
        // Make the rigid body not change rotation
        if (rigidbody)
        {
            rigidbody.freezeRotation = true;
        }
    }

It works like a charm, but the problem i am having is: Lets say for example my character is facing forward I can go forward using the key “W” which i went into my input manager and mapped the keys, And basically i have complete w,a,s,d controls but if I am facing forward and then i turn lets just say left, then my character is facing left but my character is still going in the forward direction. So basically I don’t know if I am wording this right but, I want to rotate the transform. But keep in mind i want to do it with code. Thanks

hi

your problem occur in this part

 if(Input.GetButton("Forward")){
animation.CrossFade("hum_run");
transform.position.x += movSpeed * Time.deltaTime;
isAnimation = true;
}
if(Input.GetButton("Backward")){
animation.CrossFade("hum_back");
transform.position.x -= movSpeed * Time.deltaTime;
isAnimation = true;
}
if(Input.GetButton("Right")){
animation.CrossFade("hum_strafe_right");
transform.position.y += movSpeed * Time.deltaTime;
isAnimation = true;
}
if(Input.GetButton("Left")){
animation.CrossFade("hum_strafe_left");
transform.position.y -= movSpeed * Time.deltaTime;
isAnimation = true;
}

and i can solve it

when u press W or S must change character position in forward directon not at posiyion.x
hen u prees A and D u must change character position in right directin not at position.y
for example

          transform.position +=transform.forward* movSpeed * Time.deltaTime;

use this
if(Input.GetButton(“Forward”)){
animation.CrossFade(“hum_run”);
transform.position +=transform.forward* movSpeed * Time.deltaTime;
isAnimation = true;
}
if(Input.GetButton(“Backward”)){
animation.CrossFade(“hum_back”);
transform.position -=transform.forward* movSpeed * Time.deltaTime;
isAnimation = true;
}
if(Input.GetButton(“Right”)){
animation.CrossFade(“hum_strafe_right”);
transform.position +=transform.rightmovSpeed * Time.deltaTime;
isAnimation = true;
}
if(Input.GetButton(“Left”)){
animation.CrossFade(“hum_strafe_left”);
transform.position -=transform.right
movSpeed * Time.deltaTime;
isAnimation = true;
}

hi

your problem occur in this part

 if(Input.GetButton("Forward")){
animation.CrossFade("hum_run");
transform.position.x += movSpeed * Time.deltaTime;
isAnimation = true;
}
if(Input.GetButton("Backward")){
animation.CrossFade("hum_back");
transform.position.x -= movSpeed * Time.deltaTime;
isAnimation = true;
}
if(Input.GetButton("Right")){
animation.CrossFade("hum_strafe_right");
transform.position.y += movSpeed * Time.deltaTime;
isAnimation = true;
}
if(Input.GetButton("Left")){
animation.CrossFade("hum_strafe_left");
transform.position.y -= movSpeed * Time.deltaTime;
isAnimation = true;
}

and i can solve it

when u press W or S must change character position in forward directon not at posiyion.x
hen u prees A and D u must change character position in right directin not at position.y
for example

          transform.position +=transform.forward* movSpeed * Time.deltaTime;

use this
if(Input.GetButton(“Forward”)){
animation.CrossFade(“hum_run”);
transform.position +=transform.forward* movSpeed * Time.deltaTime;
isAnimation = true;
}
if(Input.GetButton(“Backward”)){
animation.CrossFade(“hum_back”);
transform.position -=transform.forward* movSpeed * Time.deltaTime;
isAnimation = true;
}
if(Input.GetButton(“Right”)){
animation.CrossFade(“hum_strafe_right”);
transform.position +=transform.rightmovSpeed * Time.deltaTime;
isAnimation = true;
}
if(Input.GetButton(“Left”)){
animation.CrossFade(“hum_strafe_left”);
transform.position -=transform.right
movSpeed * Time.deltaTime;
isAnimation = true;
}

Oh Thank you sooooo much this didn’t exactly work perfectly but now i know where to tweak it and mess around to get it To work… Thank You So much! i have been working at this for 2 days xD