hey guys ive created a dead space style orbit camera but i want it to always stay on the right when the player rotates the camera infront of the player and moves in the direction the player has chose. Here is an example of what i have now and what i want: and here is the script: Code (csharp): var target : Transform; var targetOffset = Vector3.zero; var distance = 4.0; var lineOfSightMask : LayerMask = 0; var closerRadius : float = 0.2; var closerSnapLag : float = 0.2; var xSpeed = 200.0; var ySpeed = 80.0; var yMinLimit = -20; var yMaxLimit = 80; private var currentDistance = 10.0; private var x = 0.0; private var y = 0.0; private var distanceVelocity = 0.0; function Start () { var angles = transform.eulerAngles; x = angles.y; y = angles.x; currentDistance = distance; // Make the rigid body not change rotation if (rigidbody) rigidbody.freezeRotation = true; } function LateUpdate() { if(target) { x += Input.GetAxis("Mouse X") * xSpeed * 0.02; y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02; y = ClampAngle(y, yMinLimit, yMaxLimit); var rotation = Quaternion.Euler(y, x, 0); var targetPos = target.position + targetOffset; var direction = rotation * -Vector3.forward; var targetDistance = AdjustLineOfSight(targetPos, direction); currentDistance = Mathf.SmoothDamp(currentDistance, targetDistance , distanceVelocity, closerSnapLag * .3); transform.rotation = rotation; transform.position = targetPos + direction * currentDistance; /* if(transform.localPosition.z > 0.8) { targetOffset.x = -0.55; Debug.Log("Switch Camera Position"); } if(transform.localPosition.z < 0.8) { targetOffset.x = 0.55; Debug.Log("Original Camera Position"); } */ } } function AdjustLineOfSight (target : Vector3, direction : Vector3) : float { var hit : RaycastHit; if (Physics.Raycast (target, direction, hit, distance, lineOfSightMask.value)) return hit.distance - closerRadius; else return distance; } 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); } @script AddComponentMenu("Dead Space/Issac Camera")
Hi, some time ago I had the same problem-solution I found here http://u3d.as/content/unity-technologies/3rd-person-shooter/1qT. After setting parameters the player is still left of the camera and it works great, - )