I have an helicopter with a script which plays different animation depending on the inputs. The problem is that
1)When I rotate it in the scene view and I press Play it starts at the same rotation(0,0,0)
2)When I play an animation that rotates itself it always begin at the rotation (0,0,0).
However, Here’s the code:
#pragma strict
var eliche : Transform[];
//Uso animationState x effettuare il blending successivo
private var idle : AnimationState;
private var back : AnimationState;
private var forward : AnimationState;
private var left : AnimationState;
private var right : AnimationState;
private var turnLeft : AnimationState;
private var turnRight : AnimationState;
//Settaggio di tutte le variabili e funzioni in partenza
function Start(){
animation.Stop();
turnLeft = animation["turnLeft"];
turnRight = animation["turnRight"];
idle = animation["idle"];
back = animation["back"];
forward = animation["forward"];
left = animation["left"];
right = animation["right"];
turnLeft.blendMode = AnimationBlendMode.Blend;
turnRight.blendMode = AnimationBlendMode.Blend;
back.wrapMode = WrapMode.ClampForever;
forward.wrapMode = WrapMode.ClampForever;
left.wrapMode = WrapMode.ClampForever;
right.wrapMode = WrapMode.ClampForever;
idle.wrapMode = WrapMode.ClampForever;
}
function FixedUpdate () {
if (Input.GetKey(KeyCode.Q)){
transform.Translate(Vector3.up*Time.fixedDeltaTime*10);
}
else if (Input.GetKey(KeyCode.E)){
transform.Translate(-Vector3.up*Time.fixedDeltaTime*10);
}
//esecuzione animazione
if (Input.GetButton("Horizontal") || Input.GetButton("Vertical")){
if (Input.GetAxis("Horizontal") > 0.000 && Input.GetAxis("Vertical") == 0.00){
animation.CrossFade("right", 0.7);
}
else if (Input.GetAxis("Horizontal") < -0.00 && Input.GetAxis("Vertical") == 0.00){
animation.CrossFade("left", 0.7);
}
else if (Input.GetAxis("Vertical") > 0.00 && Input.GetAxis("Horizontal") == 0.00){
animation.CrossFade("forward", 0.7);
}
else if (Input.GetAxis("Vertical") < -0.00 && Input.GetAxis("Horizontal") == 0.00){
animation.CrossFade("back", 0.7);
}
else if (Input.GetAxis("Horizontal") > 0.00 && Input.GetAxis("Vertical") > 0.00){
animation.CrossFade("forwardRight", 0.7);
}
else if (Input.GetAxis("Horizontal") > 0.00 && Input.GetAxis("Vertical") < -0.00){
animation.CrossFade("backRight", 0.7);
}
else if (Input.GetAxis("Horizontal") < -0.00 && Input.GetAxis("Vertical") > 0.00){
animation.CrossFade("forwardLeft", 0.7);
}
else if (Input.GetAxis("Horizontal") < 0.00 && Input.GetAxis("Vertical") < -0.00){
animation.CrossFade("backLeft", 0.7);
}
}
else if((Input.GetAxis("Horizontal") && Input.GetAxis("Vertical")) == 0.00 ){
//animation.CrossFade("idle", 1);
}
if (Input.GetKey(KeyCode.Alpha1)){
animation.CrossFade("turnLeft");
}
else if (Input.GetKeyUp(KeyCode.Alpha1)){
animation.Stop("turnLeft");
}
else if (Input.GetKey(KeyCode.Alpha3)){
animation.CrossFade("turnRight");
}
else if (Input.GetKeyUp(KeyCode.Alpha3)){
animation.Stop("turnRight");
}
//Debug.Log("Input Orizzontale è"+Input.GetAxis("Horizontal"));
//Debug.Log("Input Verticale è"+Input.GetAxis("Vertical"));
//Move(currentSpeedBackForward, currentSpeedLeftRight);
}
function LateUpdate(){
//Ebbe, muoviamo le eliche
for(var i: Transform in eliche){
i.Rotate(Vector3(0,1,0)*100, Space.Self);
}
}