Connexion




Poster un nouveau sujet Répondre au sujet  [ 1 message ] 
Auteur Message
 Sujet du message: Unity 3D- PlayerMouseLook-UnderControl-Remote
UNREAD_POSTPosté: Ven Aoû 17, 2012 2:44 am 
NooFondateur
Avatar de l’utilisateur
Inscription: Mar Jan 09, 2007 3:21 am
Messages: 1166
Code:
/// MouseLook rotates the transform based on the mouse delta.
/// Minimum and Maximum values can be used to constrain the possible rotation

/// To make an FPS style character:
/// - Create a capsule.
/// - Add a rigid body to the capsule
/// - Add the MouseLook script to the capsule.
///   -> Set the mouse look to use LookX. (You want to only turn character but not tilt it)
/// - Add FPSWalker script to the capsule

/// - Create a camera. Make the camera a child of the capsule. Reset it's transform.
/// - Add a MouseLook 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.)

enum RotationAxesB2 { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
   
public var axes : RotationAxesB2 = RotationAxesB2.MouseXAndY;
public var SensibiliteX : float= 3;
public var SensibiliteY : float= 3;

public var minimumX : float= -360;
public var maximumX : float= 360;

public var  minimumY : float= -60;
public var maximumY : float= 60;

var rotationX : float= 0;
var rotationY : float = 0;

var originalRotation : Quaternion;

var RotationSliderValue : float = 2.0; static var volume : float;




// affiche un curseur permettant de multiplier la vitesse de rotation
function OnGUI () {
RotationSliderValue = GUI.HorizontalSlider (Rect (0, 100, 100, 20), RotationSliderValue, 0.0, 10.0);
GUI.Box(Rect(0,80,100,35),"Rotation");
// AudioListener.volume = RotationSliderValue/10;

Debug.Log(RotationSliderValue);
}


function Update ()
{

var sensitivityX = SensibiliteX*(RotationSliderValue/2);
var sensitivityY = SensibiliteY*(RotationSliderValue/2);

   if(!Screen.lockCursor){
      //return;
   }
   
   var yQuaternion : Quaternion;
   var xQuaternion : Quaternion;
   Debug.Log(xQuaternion);
   
   //Debug.Log(Inputs.GetAxis("Horizontal"));   

   //var seuil = 0.01;
   if(Mathf.Abs(Inputs.GetAxis("Horizontal")) < 0.2) return;
//   if(Inputs.GetAxis("Vertical") < seuil) return;
   
   
   
   if (axes == RotationAxesB2.MouseXAndY)
   {
      // Read the mouse input axis
      rotationX += Inputs.GetAxis("Horizontal") * sensitivityX;
      rotationY += Inputs.GetAxis("Vertical") * sensitivityY;

      rotationX = ClampAngle (rotationX, minimumX, maximumX);
      rotationY = ClampAngle (rotationY, minimumY, maximumY);
      
      xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up);
      yQuaternion = Quaternion.AngleAxis (rotationY, Vector3.left);
      
      transform.localRotation = originalRotation * xQuaternion * yQuaternion;
   }
   else if (axes == RotationAxesB2.MouseX)
   {
      rotationX += Inputs.GetAxis("Horizontal") * sensitivityX;
      rotationX = ClampAngle (rotationX, minimumX, maximumX);

      xQuaternion  = Quaternion.AngleAxis (rotationX, Vector3.up);
      transform.localRotation = originalRotation * xQuaternion;
   }
   else
   {
      rotationY += Inputs.GetAxis("Vertical") * sensitivityY;
      rotationY = ClampAngle (rotationY, minimumY, maximumY);

      yQuaternion = Quaternion.AngleAxis (rotationY, Vector3.left);
      transform.localRotation = originalRotation * yQuaternion;
   }
}
   
function Start ()
{
   // Make the rigid body not change rotation
   if (rigidbody){
      rigidbody.freezeRotation = true;
   }
   originalRotation = transform.localRotation;
}
   
static function ClampAngle ( angle : float,  min : float, max :  float) : float
{
   if (angle < -360)
      angle += 360;
   if (angle > 360)
      angle -= 360;
   return Mathf.Clamp (angle, min, max);
}


 Hors ligne
 

Afficher les messages postés depuis:  Trier par  

Poster un nouveau sujet Répondre au sujet  [ 1 message ] 


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

Panel

Haut Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Rechercher:
Aller à:  
 cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduction par: phpBB-fr.com
Dizayn Ercan Koc