- Home /
Converting pc mouse input to iphone joysticks?
I'm trying to convert mouse and keyboard inputs to iphone joysticks input but keep getting problems. If anyone could help me change this input to use my mobile joysticks It would be a life saver!
I understand there is an easier way of doing this by keeping the pc input code and just adding a psuedo script to map the joysticks to the keyboard controls? The only help I could find was this IPhoneToMouse
But I need it the other way around and in java script. I've been using the penelope tutorial joysticks to help me convert this but its not working out. Heres the mouse code for camera look
x += Mathf.Clamp(Input.GetAxis("Mouse X") + Input.GetAxis("Horizontal2"), -1, 1) *
fovMultiplier *
((ragdollCamera) ? xSpeed : GameStatus.mouseSensitivityX);
y -= Mathf.Clamp(Input.GetAxis("Mouse Y") + Input.GetAxis("Vertical2"), -1, 1) *
fovMultiplier *
((ragdollCamera) ? ySpeed : GameStatus.mouseSensitivityY);
If someone could help convert the above to use mobile joysticks that would be really great. I can probably get the character controller remapped if someone could help me with the camera look for now, thanks!
Answer by Griffo · Aug 22, 2012 at 08:51 AM
This is what I used from the penelope tutorial, hope it helps.
#pragma strict
@script RequireComponent( CharacterController )
// This script must be attached to a GameObject that has a CharacterController
var moveJoystick : Joystick;
var rotateJoystick : Joystick;
var cameraPivot : Transform; // The transform used for camera rotation
var forwardSpeed : float = 4;
var backwardSpeed : float = 4;
var sidestepSpeed : float = 4;
var jumpSpeed : float = 8;
var inAirMultiplier : float = 0.25; // Limiter for ground speed while jumping
var rotationSpeed : Vector2 = Vector2( 50, 50 ); // Camera rotation speed for each axis
private var thisTransform : Transform;
private var character : CharacterController;
private var cameraVelocity : Vector3;
private var velocity : Vector3; // Used for continuing momentum while in air
private var canJump = true;
function Start()
{
// Cache component lookup at startup instead of doing this every frame
thisTransform = GetComponent( Transform );
character = GetComponent( CharacterController );
}
function Update()
{
var movement = thisTransform.TransformDirection( Vector3( moveJoystick.position.x, 0, moveJoystick.position.y ) );
// We only want horizontal movement
movement.y = 0;
movement.Normalize();
// Apply movement from move joystick
var absJoyPos = Vector2( Mathf.Abs( moveJoystick.position.x ), Mathf.Abs( moveJoystick.position.y ) );
if ( absJoyPos.y > absJoyPos.x )
{
if ( moveJoystick.position.y > 0 )
movement *= forwardSpeed * absJoyPos.y;
else
movement *= backwardSpeed * absJoyPos.y;
}
else
movement *= sidestepSpeed * absJoyPos.x;
// Check for jump
if ( character.isGrounded )
{
var jump = false;
var touchPad : Joystick;
if ( rotateJoystick )
touchPad = rotateJoystick;
else
touchPad = moveJoystick;
if ( !touchPad.IsFingerDown() )
canJump = true;
if ( canJump && touchPad.tapCount >= 2 )
{
jump = true;
canJump = false;
}
if ( jump )
{
// Apply the current movement to launch velocity
velocity = character.velocity;
velocity.y = jumpSpeed;
}
}
else
{
// Apply gravity to our velocity to diminish it over time
velocity.y += Physics.gravity.y * Time.deltaTime;
// Adjust additional movement while in-air
movement.x *= inAirMultiplier;
movement.z *= inAirMultiplier;
}
movement += velocity;
movement += Physics.gravity;
movement *= Time.deltaTime;
// Actually move the character
character.Move( movement );
if ( character.isGrounded )
// Remove any persistent velocity after landing
velocity = Vector3.zero;
// Apply rotation from rotation joystick
if ( character.isGrounded )
{
var camRotation = Vector2.zero;
if ( rotateJoystick ){
camRotation = rotateJoystick.position;
camRotation.x *= rotationSpeed.x;
camRotation.y *= rotationSpeed.y;
camRotation *= Time.deltaTime;
// Rotate the character around world-y using x-axis of joystick
thisTransform.Rotate( 0, camRotation.x, 0, Space.World );
// Rotate only the camera with y-axis input
cameraPivot.Rotate( -camRotation.y, 0, 0 );
}
}
}
Your answer
Follow this Question
Related Questions
Easier way to remap mouse axis / keyboard input to iphone joysticks? 0 Answers
Joystick / Button 3 Answers
Is there a way to create a floating JoyStick using the On-Screen Stick component? 0 Answers
How do you bring up the mobile keyboard without this area? 1 Answer
How can I control cursor with joystick 4 Answers