Collision

Hello,

I’m still new at 3d programming in Java and I was wondering how I add collision with the terrain.
I want my character to stop falling when it touches the ground/walls (so horizontally and vertically)

I just added a Platformer Input Contoller script:

// This makes the character turn to face the current movement speed per default.
var autoRotate : boolean = true;
var maxRotationSpeed : float = 360;

private var motor : CharacterMotor;

// Use this for initialization
function Awake () {
motor = GetComponent(CharacterMotor);
}

// Update is called once per frame
function Update () {
// Get the input vector from kayboard or analog stick
var directionVector = new Vector3(Input.GetAxis(“Horizontal”), Input.GetAxis(“Vertical”), 0);

if (directionVector != Vector3.zero) {
// Get the length of the directon vector and then normalize it
// Dividing by the length is cheaper than normalizing when we already have the length anyway
var directionLength = directionVector.magnitude;
directionVector = directionVector / directionLength;

// Make sure the length is no bigger than 1
directionLength = Mathf.Min(1, directionLength);

// Make the input vector more sensitive towards the extremes and less sensitive in the middle
// This makes it easier to control slow speeds when using analog sticks
directionLength = directionLength * directionLength;

// Multiply the normalized direction vector by the modified length
directionVector = directionVector * directionLength;
}

// Rotate the input vector into camera space so up is camera’s up and right is camera’s right
directionVector = Camera.main.transform.rotation * directionVector;

// Rotate input vector to be perpendicular to character’s up vector
var camToCharacterSpace = Quaternion.FromToRotation(-Camera.main.transform.forward, transform.up);
directionVector = (camToCharacterSpace * directionVector);

// Apply the direction to the CharacterMotor
motor.inputMoveDirection = directionVector;
motor.inputJump = Input.GetButton(“Jump”);

// Set rotation to the move direction
if (autoRotate directionVector.sqrMagnitude > 0.01) {
var newForward : Vector3 = ConstantSlerp(
transform.forward,
directionVector,
maxRotationSpeed * Time.deltaTime
);
newForward = ProjectOntoPlane(newForward, transform.up);
transform.rotation = Quaternion.LookRotation(newForward, transform.up);
}
}

function ProjectOntoPlane (v : Vector3, normal : Vector3) {
return v - Vector3.Project(v, normal);
}

function ConstantSlerp (from : Vector3, to : Vector3, angle : float) {
var value : float = Mathf.Min(1, angle / Vector3.Angle(from, to));
return Vector3.Slerp(from, to, value);
}

// Require a character controller to be attached to the same game object
@script RequireComponent (CharacterMotor)
@script AddComponentMenu (“Character/Platform Input Controller”)

Thanks!

Oops, I’m sorry, I’ve posted this in the wrong forum, I have no idea how to change the forum.