Guest User

BlendShapeControllerTest.cs

a guest
Dec 6th, 2014
196
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class BlendShapeControllerTest : MonoBehaviour
  5. {
  6.     public Transform source;
  7.     public Transform target;
  8.     SkinnedMeshRenderer skinnedMeshRenderer;
  9.     float blendVal1 = 0f;
  10.     float blendVal2 = 50f;
  11.     float blendVal3 = 100f;
  12.     float mouthspeed = .1f;
  13.     float speed = .1f;
  14.     bool up2 = true;
  15.     bool up3 = true;
  16.     bool other = false;
  17.     int state = -1;
  18.    
  19.     void Awake ()
  20.     {
  21.         skinnedMeshRenderer = GetComponent<SkinnedMeshRenderer> ();
  22.     }
  23.    
  24.     void Start ()
  25.     {
  26.         skinnedMeshRenderer.SetBlendShapeWeight (34, 50f);  //tongue thinner
  27.     }
  28.    
  29.     void Update ()
  30.     {
  31.         //modify lick speed by dpad input
  32.         float value = Input.GetAxis("dpad") / 1000;
  33.  
  34.         if( Input.GetKey(KeyCode.L) )
  35.         {
  36.             value = .001f;
  37.         }
  38.         else if( Input.GetKey(KeyCode.K) )
  39.         {
  40.             value = -.001f;
  41.         }
  42.  
  43.         if (speed > .01f && value < 0f)
  44.         {
  45.             speed += value;
  46.         }
  47.         else if (speed < .4f && value > 0f)
  48.         {
  49.             speed += value;
  50.         }
  51.  
  52.         float distance = Vector3.Distance(source.position, target.position);
  53.  
  54.         if (distance > 1.1f)
  55.         {
  56.             if(state != 0)
  57.             {
  58.                 state = 0;
  59.                 //skinnedMeshRenderer.SetBlendShapeWeight (1, 0f);  //mouth open
  60.                 skinnedMeshRenderer.SetBlendShapeWeight (9, 75f);   //smile
  61.                 skinnedMeshRenderer.SetBlendShapeWeight (22, 0f);   //eye lids
  62.                 skinnedMeshRenderer.SetBlendShapeWeight (24, 0f);   //eye brows
  63.                 skinnedMeshRenderer.SetBlendShapeWeight (31, 0f);   //tongue out
  64.                 //skinnedMeshRenderer.SetBlendShapeWeight (32, 30f);    //tongue up
  65.                 skinnedMeshRenderer.SetBlendShapeWeight (41, 0f);   //blush
  66.  
  67.                 skinnedMeshRenderer.SetBlendShapeWeight (32, 0f);   //tongue up
  68.                 skinnedMeshRenderer.SetBlendShapeWeight (33, 0f);   //tongue lick
  69.             }
  70.         }
  71.         else if (distance > .8f)
  72.         {
  73.             if(state != 1)
  74.             {
  75.                 state = 1;
  76.                 //skinnedMeshRenderer.SetBlendShapeWeight (1, 100f);    //mouth open
  77.                 skinnedMeshRenderer.SetBlendShapeWeight (9, 75f);   //smile
  78.                 skinnedMeshRenderer.SetBlendShapeWeight (22, 100f); //eye lids
  79.                 skinnedMeshRenderer.SetBlendShapeWeight (24, 100f); //eye brows
  80.                 skinnedMeshRenderer.SetBlendShapeWeight (31, 100f); //tongue out
  81.                 //skinnedMeshRenderer.SetBlendShapeWeight (32, 30f);    //tongue up
  82.                 skinnedMeshRenderer.SetBlendShapeWeight (41, 100f); //blush
  83.             }
  84.         }
  85.         else
  86.         {
  87.             if(state != 2)
  88.             {
  89.                 state = 2;
  90.                 //skinnedMeshRenderer.SetBlendShapeWeight (1, 100f);    //mouth open
  91.                 skinnedMeshRenderer.SetBlendShapeWeight (9, 75f);   //smile
  92.                 skinnedMeshRenderer.SetBlendShapeWeight (22, 100f); //eye lids
  93.                 skinnedMeshRenderer.SetBlendShapeWeight (24, 100f); //eye brows
  94.                 skinnedMeshRenderer.SetBlendShapeWeight (31, 100f); //tongue out
  95.                 //skinnedMeshRenderer.SetBlendShapeWeight (32, 30f);    //tongue up
  96.                 skinnedMeshRenderer.SetBlendShapeWeight (41, 100f); //blush
  97.             }
  98.         }
  99.  
  100.         //mouth open/close animation anytime players is within distance
  101.         if(state != 0)
  102.         {
  103.             if( blendVal1 < 100f)
  104.             {
  105.                 blendVal1 += mouthspeed / Time.deltaTime;
  106.                 skinnedMeshRenderer.SetBlendShapeWeight (1, blendVal1); //mouth open
  107.             }
  108.         }
  109.         else
  110.         {
  111.             if( blendVal1 > 0f)
  112.             {
  113.                 blendVal1 -= mouthspeed / Time.deltaTime;
  114.                 skinnedMeshRenderer.SetBlendShapeWeight (1, blendVal1); //mouth open
  115.             }
  116.         }
  117.  
  118.         if(state == 2)  //licking
  119.         {
  120.             if (up2)
  121.             {
  122.                 blendVal2 += speed / Time.deltaTime;
  123.                 if(blendVal2 >= 100f)
  124.                 {
  125.                     up2 = false;
  126.                 }
  127.             }
  128.             else
  129.             {
  130.                 blendVal2 -= speed / Time.deltaTime;
  131.                 if(blendVal2 <= 0f)
  132.                 {
  133.                     up2 = true;
  134.                 }
  135.             }
  136.    
  137.             if (up3)
  138.             {
  139.                 blendVal3 += speed / Time.deltaTime;
  140.                 if(blendVal3 >= 100f)
  141.                 {
  142.                     up3 = false;
  143.                 }
  144.             }
  145.             else
  146.             {
  147.                 blendVal3 -= speed / Time.deltaTime;
  148.                 if(blendVal3 <= 0f)
  149.                 {
  150.                     up3 = true;
  151.                 }
  152.             }
  153.    
  154.             if (other)
  155.             {
  156.                 //skinnedMeshRenderer.SetBlendShapeWeight (31, blendVal1);  //tongue out
  157.                 skinnedMeshRenderer.SetBlendShapeWeight (32, blendVal2);    //tongue up
  158.                 skinnedMeshRenderer.SetBlendShapeWeight (33, blendVal3);    //tongue lick
  159.                 other = false;
  160.             }
  161.             else
  162.             {
  163.                 other = true;
  164.             }
  165.         }
  166.         else if(state == 3) //sucking
  167.         {
  168.        
  169.         }
  170.     }
  171. }
RAW Paste Data