Working with 3D Models

Hello everyone !

Today when I tried to work with my 3D character model, I can't get her to do any actions (walk, run etc). My model is a .3ds file and I downloaded it from the internet. I'm sorry that I'm this stupid, but what should I do in Unity3D to animate my character model ?

.3ds does not support animation. You will need a different format.

http://unity3d.com/unity/editor/importing

well I know what you mean that's not the point.

You don't have to change this... just add a Character controller to this and drag the main camera as a child object to the character and position it where you want. And don't forget to add a lookround script on the camera:

using UnityEngine; using System.Collections;

/// MouseLook rotates the transform based on the mouse delta. /// 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 MouseLook script to the capsule. /// -> Set the mouse look to use LookX. (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 a MouseLook script to the camera. /// -> Set the mouse look to use LookY. (You want the camera to tilt up and down like a head. The character already turns.) [AddComponentMenu("Camera-Control/Mouse Look")] public class MouseLook : MonoBehaviour {

public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
public RotationAxes axes = RotationAxes.MouseXAndY;
public float sensitivityX = 15F;
public float sensitivityY = 15F;

public float minimumX = -360F;
public float maximumX = 360F;

public float minimumY = -60F;
public float maximumY = 60F;

float rotationX = 0F;
float rotationY = 0F;

Quaternion originalRotation;

void Update ()
{
    if(Input.mousePosition.x < 0 || Input.mousePosition.y < 0 || Input.mousePosition.x > Screen.width || Input.mousePosition.y > Screen.height)
    {
        return;
    }

    if (axes == RotationAxes.MouseXAndY)
    {
        // Read the mouse input axis
        rotationX += Input.GetAxis("Mouse X") * sensitivityX;
        rotationY += Input.GetAxis("Mouse Y") * sensitivityY;

        rotationX = ClampAngle (rotationX, minimumX, maximumX);
        rotationY = ClampAngle (rotationY, minimumY, maximumY);

        Quaternion xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up);
        Quaternion yQuaternion = Quaternion.AngleAxis (rotationY, -Vector3.right);

        transform.localRotation = originalRotation * xQuaternion * yQuaternion;
    }
    else if (axes == RotationAxes.MouseX)
    {
        rotationX += Input.GetAxis("Mouse X") * sensitivityX;
        rotationX = ClampAngle (rotationX, minimumX, maximumX);

        Quaternion xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up);
        transform.localRotation = originalRotation * xQuaternion;
    }
    else
    {
        rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
        rotationY = ClampAngle (rotationY, minimumY, maximumY);

        Quaternion yQuaternion = Quaternion.AngleAxis (-rotationY, Vector3.right);
        transform.localRotation = originalRotation * yQuaternion;
    }
}

void Start ()
{
    // Make the rigid body not change rotation
    if (rigidbody)
        rigidbody.freezeRotation = true;
    originalRotation = transform.localRotation;
}

public static float ClampAngle (float angle, float min, float max)
{
    if (angle < -360F)
        angle += 360F;
    if (angle > 360F)
        angle -= 360F;
    return Mathf.Clamp (angle, min, max);
}

}

` then just do on you character the following script:

var speed = 6.0; var jumpSpeed = 8.0; var gravity = 20.0;

private var moveDirection = Vector3.zero; private var grounded : boolean = false;

function FixedUpdate() { if (grounded) { // We are grounded, so recalculate movedirection directly from axes moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); if (moveDirection==Vector3.zero) { SendMessage("PlayAnimation", "idle"); } else { SendMessage("PlayAnimation", "walk"); }

moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;

if (Input.GetButton ("Jump")) {
    SendMessage("PlayAnimation", "jump");
    moveDirection.y = jumpSpeed;
}

}

// Apply gravity
moveDirection.y -= gravity * Time.deltaTime;

// Move the controller
var controller : CharacterController = GetComponent(CharacterController);
var flags = controller.Move(moveDirection * Time.deltaTime);
grounded = (flags & CollisionFlags.CollidedBelow) != 0;
`

} function Update(){ if(Input.GetButtonDown("run")) { speed = 12;

}
if(Input.GetButtonUp(“run”))
{
speed = 6;

}

} @script RequireComponent(CharacterController)

Then start the game...

Well you will see that u can walk but there's no animation but this doesn't matter.

You can add it later...

BYE

Henry