1)i have a player which is followed by camera,
with left and right arrow i make turns,
and with A and D,horizontal movement is done.
but as soon as my player turns,
A and D works as vertical movement.
how to get it work.
2)and also,how to make my camera to rotate behind my player,
coz when i make my cam child of player,
it goes below terrain when my player slides
the script:
#pragma strict
var controller : CharacterController ;
private var moveDirection : Vector3 = Vector3.zero;
private var gravity : float = 1;
private var vSpeed :int;
private var jumpspeed=25;
var living=Vector3.forward;
var jump: AudioClip;
var sliding: AudioClip;
private var movement: Vector3=Vector3.zero;
private var moveSpeed = 5;
var die: AudioClip;
var over: AudioClip;
private var slideflag=false;
private var jumpflag=false;
function Start ()
{
controller= GetComponent(CharacterController);
animation["run"].speed=1.2;
}
function FixedUpdate () {
if(living!=Vector3.right)
{
movement=Vector3(Input.GetAxis("Horizontal")*4,0,0);
moveDirection =(living)*4.5 + movement;
moveDirection *= moveSpeed;
if(controller.isGrounded)
{
vSpeed=0;
jumpflag=false;
if(slideflag==false)
{
animation.Play("run");
if (Input.GetKeyDown(KeyCode.Space))
{
jumpflag=true;
animation.Play("jump_pose");
audio.PlayOneShot(jump);
vSpeed=jumpspeed;
}
}
}
dieplayer();
if (Input.GetKeyDown(KeyCode.S))
slide();
if(Input.GetKeyDown(KeyCode.RightArrow))
{
transform.LookAt(transform.position + Vector3.right);
// transform.Rotate(0,90,0);
}
if(Input.GetKeyDown(KeyCode.LeftArrow))
{
transform.Rotate(transform.position + Vector3.left);
}
vSpeed -= gravity ;
moveDirection.y=vSpeed;
controller.Move(moveDirection*Time.deltaTime );
}
}
function slide()
{
if(jumpflag==false)
{
if (Input.GetKeyDown(KeyCode.S))
{
slideflag=true;
animation.Play("jump_pose");
transform.rotation = Quaternion.Euler(-90,000,0);
transform.Translate(0,-2,0);
audio.PlayOneShot(sliding);
yield WaitForSeconds(1);
transform.rotation = Quaternion.Euler(0,000,0);
animation.Play("run");
slideflag=false;
}
}
}
function dieplayer()
{
if(living==Vector3.zero)
{
living=Vector3.right;
audio.Stop();
animation.Stop("run");
audio.PlayOneShot(die);
yield WaitForSeconds(.5f);
audio.PlayOneShot(over);
}
}