merhaba, bir küp yapmaya çalışıyorum sadece yukarı ve aşağıya doğru yuvarlanarak hareket edecek. yapmak istediğim kullanıcı oyuna girdiğinde küp ekranın altında olacak ve hareketsiz duracak ama ekrana dokunduğu saniye küp yukarıya doğru yuvarlanarak gitmeye başlicak taki tekrar ekrana dokunduğunda bu sefer yukarı değil yön değiştirip aşağıya doğru inmeye başlicak. kısaca her dokunuşta yön değiştirerek (yukarı veya aşağı) durmaksızın yol alcak. şu ana kadar elimdeki kod bu ve bu kodta sadece klavye tuşlarıyla yapılıyor onda da her zaman basman gerekiyor hareket etmesi için;
Kod:
using UnityEngine;
using System.Collections;
public class Cube : MonoBehaviour
{
public float tumblingDuration = 0.2f;
void Update()
{
var dir = Vector3.zero;
if (Input.GetKey(KeyCode.UpArrow))
dir = Vector3.forward;
if (Input.GetKey(KeyCode.DownArrow))
dir = Vector3.back;
if (Input.GetKey(KeyCode.LeftArrow))
dir = Vector3.left;
if (Input.GetKey(KeyCode.RightArrow))
dir = Vector3.right;
if (dir != Vector3.zero && !isTumbling)
{
StartCoroutine(Tumble(dir));
}
}
bool isTumbling = false;
IEnumerator Tumble(Vector3 direction)
{
isTumbling = true;
var rotAxis = Vector3.Cross(Vector3.up, direction);
var pivot = (transform.position + Vector3.down * 0.5f) + direction * 0.5f;
var startRotation = transform.rotation;
var endRotation = Quaternion.AngleAxis(90.0f, rotAxis) * startRotation;
var startPosition = transform.position;
var endPosition = transform.position + direction;
var rotSpeed = 90.0f / tumblingDuration;
var t = 0.0f;
while (t < tumblingDuration)
{
t += Time.deltaTime;
if( t < tumblingDuration)
{
transform.RotateAround(pivot, rotAxis, rotSpeed * Time.deltaTime);
yield return null;
}
else
{
transform.rotation = endRotation;
transform.position = endPosition;
}
}
isTumbling = false;
}
}