- Home /
How to rotate character with mouse and camera
Hello everyone,
I am looking to make a 3rd person game with the player character able to be rotated, with the mouse right click and directional movement of the mouse.
I have a few camera rotation scripts, but the don't translate the movement of my player at all, and not sure where I am missing the modification.
and also, I'd like to be able to switch into first person mode, with the same effects. Rotating relative to the mouse movement, while right button on the mouse is held.
the two scripts I have, one is always on, so the camera constantly rotates, which is fine, I'd just like to add a toggle to it, the other only looks left and right, but looses view of the character.
Always on Script:
var target : Transform;
var distance = 10.0;
var xSpeed = 250.0;
var ySpeed = 120.0;
var yMinLimit = -20;
var yMaxLimit = 80;
var distanceMin = 3;
var distanceMax = 15;
private var x = 0.0;
private var y = 0.0;
@script AddComponentMenu("Camera-Control/Mouse Orbit")
function Start () {
var angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
// Make the rigid body not change rotation
if (rigidbody)
rigidbody.freezeRotation = false;
}
function LateUpdate () {
if (target) {
x += Input.GetAxis("Mouse X") * xSpeed * distance* 0.02;
y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;
y = ClampAngle(y, yMinLimit, yMaxLimit);
var rotation = Quaternion.Euler(y, x, 0);
distance = Mathf.Clamp(distance - Input.GetAxis("Mouse ScrollWheel")*5, distanceMin, distanceMax);
var hit : RaycastHit;
if (Physics.Linecast (target.position, transform.position, hit)) {
distance -= hit.distance;
}
var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;
transform.rotation = rotation;
transform.position = position;
}
}
static function ClampAngle (angle : float, min : float, max : float) {
if (angle < -360)
angle += 360;
if (angle > 360)
angle -= 360;
return Mathf.Clamp (angle, min, max);
}
And only left and right script with loss of character
var target : Transform;
var distance = 10.0;
var rightclicked = Input.GetmouseButton(1);
var xSpeed = 100;
var ySpeed = 100;
var yMinLimit = -20;
var yMaxLimit = 80;
var xMinlimit = -20;
var XMaxlimit = 80;
var distanceMin = 4;
var distanceMax = 15;
private var x = 0.0;
private var y = 0.0;
function Start ()
{
var angles = transform.eulerAngles;
x = angles.y;
target = transform.parent;
}
function Update (){
if (Input.GetMouseButton(1)){
rightclicked = true;
}
else{
rightclicked = false;
}
}
function LateUpdate () {
if ( target && rightclicked == true){
x += Input.GetAxis("Mouse X") * xSpeed * distance * 0.02;
var rotation = Quaternion.Euler (0, x, 0);
var posistion = rotation * Vector3 (0.0, 0.0, -distance) + target.position;
transform.rotation = rotation;
transform.posistion = posistion;
}
}
Your answer
Follow this Question
Related Questions
How to make camera position relative to a specific target. 1 Answer
Character - Move In Mouse Direction 1 Answer
Rotate 3D character 1 Answer
Character Rotate Properly 2 Answers
Input Help! 1 Answer