- Home /
Question by
hexabyte · Dec 09, 2011 at 09:07 PM ·
cameracontrollerxboxtwosplit screen
Split Screen Issues *Two Xbox Controllers*
Hey guys,
And reason why Player One's controls are flawless, but Player Two (who uses the same scripts, but with modified Input Manager entries within the code)has strange controls?
For instance, forward/backward/left/right are fine...but tilt the camera just a little and forward becomes left and backwards become right and so on...
A modified Mouse Orbit is attached to Player Two's camera:
var target : Transform;
var distance = 10.0;
var xSpeed = 250.0;
var ySpeed = 120.0;
var yMinLimit = -20;
var yMaxLimit = 80;
private var x = 0.0;
private var y = 0.0;
partial class MouseOrbitTwo { }
function Start () {
var angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
// Make the rigid body not change rotation
if (rigidbody)
rigidbody.freezeRotation = true;
}
function LateUpdate () {
if (target) {
x += Time.deltaTime * Input.GetAxis("Mouse X2") * xSpeed;
y -= Time.deltaTime * Input.GetAxis("Mouse Y2") * ySpeed;
y = ClampAngle(y, yMinLimit, yMaxLimit);
var rotation = Quaternion.EulerAngles(y * Mathf.Deg2Rad, x * Mathf.Deg2Rad, 0);
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 this script is attached to Player Two (a Sphere):
using UnityEngine;
using System.Collections;
public class PlayerControlTwo : MonoBehaviour {
private GameObject _GameManager;
public Vector3 movement;
public float moveSpeed = 6.0f;
public float drag = 2;
void Update ()
{
Vector3 forward = Camera.main.transform.TransformDirection(Vector3.forward);
forward.y = 0;
forward = forward.normalized;
Vector3 forwardForce = forward * Input.GetAxis("Vertical2") * moveSpeed;
rigidbody.AddForce(forwardForce);
Vector3 right= Camera.main.transform.TransformDirection(Vector3.right);
right.y = 0;
right = right.normalized;
Vector3 rightForce= right * Input.GetAxis("Horizontal2") * moveSpeed;
rigidbody.AddForce(rightForce);
}
}
Any ideas as to why Player Two is acting so strange, even though both players are using the same scripts and Player One is flawless?
Comment