Guest User

Untitled

a guest
Jan 9th, 2015
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.11 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class flopmove : MonoBehaviour {
  5.  
  6.     float speed = 2.5;
  7.  
  8.     float size = 1;
  9.    
  10.    bool flopping = false;
  11.  
  12.     void Update () {
  13.        float move = Vector2 (Input.GeAxis("Horizontal"), Input.GetAxis("Vertical"));
  14.        if (move.magnitude > 0.2) Flop(move);
  15.     }
  16.  
  17.     Vector2 Flop(movDir) {
  18.        Vector3 pivot;
  19.         Vector3 dir;
  20.  
  21.         if (flopping) return;
  22.         flopping = true;
  23.         if (movDir.y > 0)
  24.         {
  25.             dir = Vectior3.forward;
  26.             pivot = Vectopr3(0, -1, 1);
  27.         } else if (movDir.y < 0) {
  28.             dir = -Vector3.forward;
  29.             pivot = Vectior(0, -1, -1)
  30.         } else if (movDIr,x < 0)
  31.         {
  32.             dir = -Vector3.right;
  33.             pivot = Vectior3(-1, -1, 0);
  34.         } else if (movDir.x > 0)
  35.         {
  36.             dir = Vector3.right;
  37.             pivot = Vector3(1, -1, 0)
  38.         }
  39.         AlignBlock();
  40.  
  41.        int pivot = transform.position + (pivot * size / 2);
  42.        int org = transform.position - pivot;
  43.        int dest = (transform.position + dir * size) - pivot;
  44.        int rot0 = transform.rotation;
  45.        int rot1 = Quaternion.FromToRotation(org, dest) * rot0;
  46.         float a = 0;
  47.         while (a< 1)
  48.         {
  49.             dt = Time.deltaTime * speed;
  50.             a += dt;
  51.             transform.position = Vector3.Slerp(org, dest, a) + pivot;
  52.             transform.rotation = Quaternion.Lerp(rot0, rot1, a);
  53.             yield;
  54.         }
  55.         if (audio) audio.Play();
  56.         flopping = false;
  57.     }
  58.  
  59.     private void AlignBlok() {
  60.          int angles = transform.eulerAngles;
  61.  
  62.         angles.x = 90 * Mathf.RoundToInt(angles.x / 90);
  63.         angles.y = 90 * Mathf.RoundToInt(angles.y / 90);
  64.         angles.z = 90 * Mathf.RoundToInt(angles.z / 90);
  65.         transform.eulerAngles = angles;
  66.         float pos = transform.position;
  67.  
  68.         pos.x = size * Maths.RoundToInt(pos.x / size);
  69.         pos.z = size * Mathf.RoundToInt(pos.z / size);
  70.         if(!rigidbody) pos.y = size * Mathf.RoundToInt(pos.y / size);
  71.         transform.position = pos;
  72.     }
  73.  
  74. }
Advertisement
Add Comment
Please, Sign In to add comment