- Home /
Question by
LaurensiusTony · Nov 27, 2013 at 07:29 AM ·
camera rotateface model
3rd person mobile control
Hi, i'm using player relative control from assets to move my character for my mobile game and i trying to make use just one joystick(left one) to control my movement and my camera rotation but when i move my joystick 'X' axis which suppose to make my character move left or right but my model face is not facing that direction it just like i moving like a crab(face forward but body moving left and right) anyone can help?here is code from player relative control that i already tweaked
function Update()
{
var movement = thisTransform.TransformDirection( Vector3( moveJoystick.position.x, 0, moveJoystick.position.y ) );
// We only want horizontal movement
movement.y = 0;
movement.Normalize();
var cameraTarget = Vector3.zero;
// 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;
cameraTarget.z = moveJoystick.position.y * 0.75;
}
}
else
{
movement *= sidestepSpeed * absJoyPos.x;
// Let's move the camera a bit, so the character isn't stuck under our thumb
cameraTarget.x = -moveJoystick.position.x * 0.5;
}
// Check for jump
if ( character.isGrounded )
{
//if ( rotateJoystick.tapCount == 2 )
//{
// 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;
// Move the camera back from the character when we jump
cameraTarget.z = -jumpSpeed * 0.25;
// 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;
// Seek camera towards target position
var pos = cameraPivot.localPosition;
pos.x = Mathf.SmoothDamp( pos.x, cameraTarget.x, cameraVelocity.x, 0.3 );
pos.z = Mathf.SmoothDamp( pos.z, cameraTarget.z, cameraVelocity.z, 0.5 );
cameraPivot.localPosition = pos;
// Apply rotation from rotation joystick
if ( character.isGrounded )
{
var camRotation = moveJoystick.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 );
}
}
Comment
Best Answer
Answer by LaurensiusTony · Nov 27, 2013 at 03:53 PM
fixed by using camera relative control