Snake oyununa benzer bir oyun yapmaya çalışıyorum fakat yılan sağa sola dönerken başını çevirmeyi bir türlü yapamadım. Transform.rotation deniyorum, bir sıkıntı çıkıyor. Aşağıda paylaştım.
Ve kod olarakta paylaşayım.
[CODE lang="csharp" title="Sıkıntı yaşadığım yer" highlight="9"] private void HandleInput()
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
if (gridMoveDirection.y != -1)
{
gridMoveDirection.x = 0;
gridMoveDirection.y = +1;
transform.rotation = new Vector3(0, 0, 90); // Sıkıntı burada diğerlerinde sıkıntı yok.
}[/CODE]
Ve bir adam böyle yapıyor gördüm de anlayamadım ve hatalı çıktı onu da atayım.
[CODE lang="csharp" title="Farklı bir kod işe yaramadı."] transform.eulerAngles = new Vector3(0, 0, GetAngleFromVector(gridMoveDirection) - 90);
private float GetAngleFromVector(Vector2Int dir)
{
float n = Mathf.Atan2(dir.y, dir.x) + Mathf.Rad2Deg;
if (n < 0) n += 360;
return n;
Rica ederim. Alttaki kodda GetAngleFromVector metodu bir vector alıyor. Bu vector aslında 2 nokta arasındaki delta y ve delta x degerlerini tutuyor(büyük ihtimal öyle). Arctan özelligi sayesinde, açı = atan(y/x) degerini buluyor. Bu buldugu değer radyandır.bunu açıya çevirebilmek için rad2deg sabit(57.29...) ile çarpıyor(kodda toplamış büyük ihtimal yanlış yazdınız çünkü çarpılması gerekiyor. Toplama hiçbir anlam ifade etmez). Artık 2 nokta arasındaki açıyı biliyor. Bunu da n degişkenine atamış. eğer n açısı negatif ise bunu 360 ile toplayıp pozitif karşılığını buluyor.
Bu kod tamamen temel basit trigonometri kuralları kullanılarak yazılmış.
Rica ederim. Alttaki kodda GetAngleFromVector metodu bir vector alıyor. Bu vector aslında 2 nokta arasındaki delta y ve delta x degerlerini tutuyor(büyük ihtimal öyle). Arctan özelligi sayesinde, açı = atan(y/x) degerini buluyor. Bu buldugu değer radyandır.bunu açıya çevirebilmek için rad2deg sabit(57.29...) ile çarpıyor(kodda toplamış büyük ihtimal yanlış yazdınız çünkü çarpılması gerekiyor. Toplama hiçbir anlam ifade etmez). Artık 2 nokta arasındaki açıyı biliyor. Bunu da n degişkenine atamış. eğer n açısı negatif ise bunu 360 ile toplayıp pozitif karşılığını buluyor.
Bu kod tamamen temel basit trigonometri kuralları kullanılarak yazılmış.
Tabiki var. Sen belirledigin bir açıda yön veriyorsun. Alttaki kod ise parametre olarak aldığı değeri hesaplayıp yönü buluyor. Optimizasyon olarak bilmiyorum. Ancak senin yazmış olduğun kod yapmaya çaıştığın oyuna daha uygun diyebilirim.
Tabiki var. Sen belirledigin bir açıda yön veriyorsun. Alttaki kod ise parametre olarak aldığı değeri hesaplayıp yönü buluyor. Optimizasyon olarak bilmiyorum. Ancak senin yazmış olduğun kod yapmaya çaıştığın oyuna daha uygun diyebilirim.