unity 2D行走动画

首先 

一帧帧播放图片代码:

  



function aniSprite(columnSize,framesPerSecond,moveDirection)
{
   var index:int = Time.time*framesPerSecond;
   
   index =index % columnSize;
   var size:Vector2;
   var offset:Vector2;
   
   if(moveDirection)
   {
      size =Vector2(1.0/columnSize,1);
      offset = Vector2(index*size.x,0);
   }
   else 
   {
      size =Vector2(-1.0/columnSize,1);
      offset = Vector2(-index*size.x,0);
   }
    renderer.material.mainTextureOffset = offset;
   renderer.material.mainTextureScale = size;
  
}


控制角色代码:



var walkSpeed:float =1.0;
var walkJump:float =6.2;
var gravity:float =20.0;


var moveDirection:int =1;


var runMaterial:Material;
var dieMaterial:Material;
var idleMaterial:Material;
var jumpMaterial:Material;
var celebrateMaterial:Material;


var soundJump:AudioClip;
var soundExit:AudioClip;


var soundRate:float =0;
var soundDelay:float =0;


private var velocity:Vector3 = Vector3.zero;
private var jumpEnable:boolean=false;


private var afterHitForceDown :float =1.0;


private var controller:CharacterController;
private var aniPlay;


function OnTriggerEnter(other:Collider)
{
    if(other.tag=="exit"&& GameObject.FindWithTag("gem")==null)
    {
        PlaySound(soundExit,0);
        
    }
}


function PlaySound(soundName,soundDelay)
{
   if(!audio.isPlaying&&Time.time>soundRate)
   {
        soundRate = Time.time+soundDelay;
        
        audio.clip = soundName;
        audio.Play();
        
        yield WaitForSeconds(audio.clip.length);
   }
}


function Start () {


    aniPlay = GetComponent("aniSprite");
    controller = GetComponent(CharacterController);
   
}


function Update () {


    if(controller.isGrounded)
    {
         velocity = Vector3(Input.GetAxis("Horizontal"),0,0);
         
         jumpEnable = false;
         
         if(velocity.x ==0)
         {
            transform.renderer.material = idleMaterial;
            aniPlay.aniSprite(1,1,true);
         }
         if(velocity.x<0)
         {
            transform.renderer.material = runMaterial;
            aniPlay.aniSprite(10,10,true);
            
            velocity*=walkSpeed;
         }
          if(velocity.x>0)
         {
            transform.renderer.material = runMaterial;
            aniPlay.aniSprite(10,10,false);
            
            velocity*=walkSpeed;
         }
           if(Input.GetButtonDown("Jump"))
         {
           velocity.y=walkJump;
           PlaySound(soundJump,0);
           jumpEnable =true;
         }
    }
    
    if(!controller.isGrounded)    
    {
          velocity.x = Input.GetAxis("Horizontal");
          
          if(moveDirection==0)
          {
              if(jumpEnable)
              {
                 velocity.x *=walkSpeed;
                 transform.renderer.material = jumpMaterial;
                 aniPlay.aniSprite(11,11,true);
              }
          }
           if(moveDirection==1)
          {
              if(jumpEnable)
              {
                 velocity.x *=walkSpeed;
                 transform.renderer.material = jumpMaterial;
                 aniPlay.aniSprite(11,11,false);
              }
          }
    }
    
   if(velocity.x<0)
      moveDirection=0;
   if(velocity.x>0)
     moveDirection=1; 
    
    velocity.y -=gravity*Time.deltaTime;
    
    controller.Move(velocity*Time.deltaTime);
}


加上character controller

你可能感兴趣的:(unity 2D行走动画)