Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- public class flopmove : MonoBehaviour {
- float speed = 2.5;
- float size = 1;
- bool flopping = false;
- void Update () {
- float move = Vector2 (Input.GeAxis("Horizontal"), Input.GetAxis("Vertical"));
- if (move.magnitude > 0.2) Flop(move);
- }
- Vector2 Flop(movDir) {
- Vector3 pivot;
- Vector3 dir;
- if (flopping) return;
- flopping = true;
- if (movDir.y > 0)
- {
- dir = Vectior3.forward;
- pivot = Vectopr3(0, -1, 1);
- } else if (movDir.y < 0) {
- dir = -Vector3.forward;
- pivot = Vectior(0, -1, -1)
- } else if (movDIr,x < 0)
- {
- dir = -Vector3.right;
- pivot = Vectior3(-1, -1, 0);
- } else if (movDir.x > 0)
- {
- dir = Vector3.right;
- pivot = Vector3(1, -1, 0)
- }
- AlignBlock();
- int pivot = transform.position + (pivot * size / 2);
- int org = transform.position - pivot;
- int dest = (transform.position + dir * size) - pivot;
- int rot0 = transform.rotation;
- int rot1 = Quaternion.FromToRotation(org, dest) * rot0;
- float a = 0;
- while (a< 1)
- {
- dt = Time.deltaTime * speed;
- a += dt;
- transform.position = Vector3.Slerp(org, dest, a) + pivot;
- transform.rotation = Quaternion.Lerp(rot0, rot1, a);
- yield;
- }
- if (audio) audio.Play();
- flopping = false;
- }
- private void AlignBlok() {
- int angles = transform.eulerAngles;
- angles.x = 90 * Mathf.RoundToInt(angles.x / 90);
- angles.y = 90 * Mathf.RoundToInt(angles.y / 90);
- angles.z = 90 * Mathf.RoundToInt(angles.z / 90);
- transform.eulerAngles = angles;
- float pos = transform.position;
- pos.x = size * Maths.RoundToInt(pos.x / size);
- pos.z = size * Mathf.RoundToInt(pos.z / size);
- if(!rigidbody) pos.y = size * Mathf.RoundToInt(pos.y / size);
- transform.position = pos;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment