Question by
Trsak · Apr 21, 2016 at 09:32 AM ·
speedcamera rotatemouselookroll a ball
Rotating camera makes ball move slower/faster
Hi there,
i have a rall ball game. I implemented Camera Mouse look.
Everything works fine, but the ball speed is modified by Camera. When i move camera at 90° over ball, it moves much slower.
How to make camera rotation not modify this?
Comment
the camera rotation should NOT modify this, i think its more something you've done which makes it behave like this. so we would nee a look at your camera-mouse-look script and your ball-move script
$$anonymous$$ouse Look script: using UnityEngine; using System.Collections;
/// $$anonymous$$ouseLook rotates the transform based on the mouse delta.
/// $$anonymous$$inimum and $$anonymous$$aximum values can be used to constrain the possible rotation
/// To make an FPS style character:
/// - Create a capsule.
/// - Add the $$anonymous$$ouseLook script to the capsule.
/// -> Set the mouse look to use LookX. (You want to only turn character but not tilt it)
/// - Add FPSInputController script to the capsule
/// -> A Character$$anonymous$$otor and a CharacterController component will be automatically added.
/// - Create a camera. $$anonymous$$ake the camera a child of the capsule. Reset it's transform.
/// - Add a $$anonymous$$ouseLook 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.)
[AddComponent$$anonymous$$enu("Camera-Control/$$anonymous$$ouse Look")]
public class $$anonymous$$ouseLook : $$anonymous$$onoBehaviour {
public enum RotationAxes { $$anonymous$$ouseXAndY = 0, $$anonymous$$ouseX = 1, $$anonymous$$ouseY = 2 }
public RotationAxes axes = RotationAxes.$$anonymous$$ouseXAndY;
public float sensitivityX = 15F;
public float sensitivityY = 15F;
public float $$anonymous$$imumX = -360F;
public float maximumX = 360F;
public float $$anonymous$$imumY = -60F;
public float maximumY = 60F;
float rotationY = 0F;
void Update ()
{
if (axes == RotationAxes.$$anonymous$$ouseXAndY)
{
float rotationX = transform.localEulerAngles.y + Input.GetAxis("$$anonymous$$ouse X") * sensitivityX;
rotationY += Input.GetAxis("$$anonymous$$ouse Y") * sensitivityY;
rotationY = $$anonymous$$athf.Clamp (rotationY, $$anonymous$$imumY, maximumY);
transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
}
else if (axes == RotationAxes.$$anonymous$$ouseX)
{
transform.Rotate(0, Input.GetAxis("$$anonymous$$ouse X") * sensitivityX, 0);
}
else
{
rotationY += Input.GetAxis("$$anonymous$$ouse Y") * sensitivityY;
rotationY = $$anonymous$$athf.Clamp (rotationY, $$anonymous$$imumY, maximumY);
transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
}
}
void Start ()
{
// $$anonymous$$ake the rigid body not change rotation
if (GetComponent<Rigidbody>())
GetComponent<Rigidbody>().freezeRotation = true;
}
}