UE4S

Yeni üye
22 Nis 2018
32
1
0
(34) İstanbul Anadolu
Merhaba;

Yaklaşık 1 haftadır uğraştığım ancak hala tam istediğim gibi olmayan bir konuda sizlere danışmak istedim. Olay şu; geliştirdiğim rts oyununda mouse ile duvar dikmek istiyorum. İlk duvar dikilip (İlk duvar derken ilk duvar parçası değil mouse un başlangıç noktasına olan uzaklığı kadar uzunca bir duvar), 2. duvar ilk duvara yapıştıktan sonra sağa sola dönerken 15 derecelik açılar yaparak kavisli bir şekilde dönüyor. Buraya kadar sorun yok. Sorun şu ki "Find look at rotation" ile aldığım açı, mouseu baz aldığım duvarın arkasına götürür götürmez 180 derece birden değişiyor ve duvar spiral haline gelip ters açı uygulamaya başlıyor. Şimdiye kadar bu ani açı değişimi olayını düzeltebilmek için "Find look at rotation" dışında da pek çok şey denedim ancak hiç biri çözüm olmadı. Bu iş için çözüm olabilecek bir fikir varsa paylaşabilir misiniz lütfen.

Teşekkürler.

Edit : Şimdi araştırırken aynı sorunu yaşamış birinin gönderdiği videoyu buldum. Videonun sonunda görebileceğiniz gibi karakter bir anda ters yöne dönerek açı yapıyor. Adam yine şanslıymış bu durumu tek obje üzerinden yaşamış. Absorbe edilebilir bir durum. Sonuçta karakteri bir şekilde istediği açıya geliyor. Benim durumumda duvarlar spirale dönüştüğü için bu sorunu kesin çözmek zorundayım.  Aşağıdaki linkten görebilirsiniz

Bu içeriği görmek için üçüncü parti çerezlerine izin vermeniz gerekli.
Daha fazla detay için çerezler sayfasını ziyaret edin.
 
LbBRnZ.png


Bulunan rotasyonu kırın, değerleri takip edin ve buna göre bir döngü yazın. Karakteriin rotasyonunu değiştirirken add movement input kullandığınıza emin olun.

Roll, Yaw, Pitch terimlerine yeniden bakın.

687474703a2f2f646f632e616c6465626172616e2e636f6d2f322d312f5f696d616765732f726f6c6c50697463685961772e706e67



Ayrıca blendspace için animasyon rotasyon değerlerini kontrol edin.
 
[UETR]Khubur' Alıntı:
LbBRnZ.png


Bulunan rotasyonu kırın, değerleri takip edin ve buna göre bir döngü yazın. Karakteriin rotasyonunu değiştirirken add movement input kullandığınıza emin olun.

Roll, Yaw, Pitch terimlerine yeniden bakın.

687474703a2f2f646f632e616c6465626172616e2e636f6d2f322d312f5f696d616765732f726f6c6c50697463685961772e706e67



Ayrıca blendspace için animasyon rotasyon değerlerini kontrol edin.

Konuyu cevapladığınız için teşekkür ederim ancak keşke o kadar basit olsaydı. Dediğim gibi bu işle yaklaşık 1 hafta uğraştım ve bu süreç içinde dediğiniz yöntemlere de baş vurdum ancak ne yazıkki bu tür yöntemlerle çözülebilen bir durum değil. En sonunda gerekenin gimbal lock ve quat rotation olduğunu gördüm ancak bu tür ileri kütüphaneleri blueprint'ten erişim olmadığı için oyunu c++ desteği ile baştan geliştirmeye karar verdim. Blueprintlerden unreal engine'in tüm kütüphanelerine ulaşamadığımız için en doğrusu bu olacaktır. 

Tekrardan teşekkürler.
 
Sadece yeni değiştirilen rotasyonu kontrol edeceksiniz ve dönmesine sebep olan değerlere göre karşılaştırıp -1 ile çarpabilirsiniz veya rotasyonunu aştığı zaman animasyonun state değiştirebilirsiniz. Aynı şekilde blendpsace ile de alakalı olabilir. İki döndürme ekseninin belirli bir şekidle bağlandığı bir gimbal lock durumu durum ortada yok. Karakterinizin animasyon blueprinti üzerinden ne şekilde döndürüyorsanız o değerlerle alakalı. Ayrıca ne gibi bir sistem yaptığınız anlayamadım.

Blueprint projenize C++ sınıfı ekleyebilirsiniz. Projeyi tekrardan C++ ile başlatmanıza gerek yok.
 
[UETR]Khubur' Alıntı:
Sadece yeni değiştirilen rotasyonu kontrol edeceksiniz ve dönmesine sebep olan değerlere göre karşılaştırıp -1 ile çarpabilirsiniz veya rotasyonunu aştığı zaman animasyonun state değiştirebilirsiniz. Aynı şekilde blendpsace ile de alakalı olabilir. İki döndürme ekseninin belirli bir şekidle bağlandığı bir gimbal lock durumu durum ortada yok. Karakterinizin animasyon blueprinti üzerinden ne şekilde döndürüyorsanız o değerlerle alakalı. Ayrıca ne gibi bir sistem yaptığınız anlayamadım.

Blueprint projenize C++ sınıfı ekleyebilirsiniz. Projeyi tekrardan C++ ile başlatmanıza gerek yok.

Ben o videoyu benzer problemi yaşamış birinin mesajından almıştım benim sorunum karakter değil. Mouse'u baz alarak duvar dikmekle alakalı.
-1 olayının konum değişkenleri ile kullanılabilmesini etkileyen bazı unsurlar olduğu için sadece if ile çözülemeyeceğini anlatmak istemiştim. Çünkü findLookAtRotation aslında -180 ile 180 arasında işlem yapabilen bir şey bunu farklı yöntemlerle -/+360 çevirdiğimizde bile (ki mouse cursorunun bulunduğu noktanın önemi yüksek) yapılan açı kendinin devamını getiremediği için motor bunu +1 tur olarak saymaya meyilli. findLookAtRotation aslında lokasyona göre tekil rotasyon ürettiği için bana 3 boyutlu sınırsız bir açı gerekiyor ve bu açıyı değişen açının devamı olarak algılamalı ki iki açı arasında değişim olurken "ben bu açıya gelebilmek için 1 tur etrafımda dönmeliyim mantığı işlemesin" buda gimbal ve 4 boyutlu hesaplamalarla olabiliyor.

Blueprinti şu açıdanda kullanmaya çekiniyorum. Öğrendiğim kadarıyla blueprint ile geliştirilen bir proje ile c++ ile geliştirilen bir proje arasında 8 kata kadar daha hızlı olabiliyormuş. Tabi bu değer projeyi geliştirenlere göre değişen bir durum ama en kötü ihtimalle %1 bile daha hızlı çalışsa benim için hiç yoktan iyidir. C++ ı fazla sevmeyen biri olarak bende blueprintte kalmak isterdim ama düzgün sonuçlar elde edebilmek için en iyi yol eski usül yazılımı kodları yazarak geliştirmek olacağını düşünüyorum.

Beni yanlış anlama gerçekten 1 hafta boyunca aynı kodu değişik yöntemlerle defalarca yazdım ancak sorun findlookatrotation ın açılara verdiği tepkiyle alakalı. findlookatrotation kullanmadan başka açı hesaplamalarıda denedim ancak hepsinde sonuç aynı çünkü 3 boyutlu uzayda 2 boyutlu açı hesaplanmış oluyor sonuçta. Quat kütüphanesi 3. boyunu yani sınırsız açıyı hesaplıyor. +360 -360 değil +5500 -10500 gibi düşünebilmesini sağlıyor. Sınırsız süregelen bir rotasyon elde edilmiş oluyor.


İlgilendiğin için çok teşekkür ederim gerçekten. Oyun işini gerçekten yapacaksam en doğru yolla çözmeliyim. Bu iş için if kullanmak yazılımı dikte etmekten başka birşey olmaz.
 
Dinamik Duvar derken tam olarak ne yapmak istiyorsunuz ben anlayamadım. Kendi sorunuz ile ilgili bir resim ya video yollarsanız daha iyi anlayabiliriz. Lütfen sorunuzu olabildiği kadar basit ve net anlatın.

Yapmak istediğiniz şeyi nasıl yapıyorsunuz mesela Linetrace ile mi uyguluyorsunuz vs...
 
Sorununuzun bir videosunu atarsanız daha net yardımcı olabiliriz. Anladığım kadarıyla karakterinizin mouse konumuna göre rotasyonunu değiştirdiğiniz zaman uzak taraftan dönmesi mi? Ekstra olarak blueprint ile bu sorunu çözebilirsiniz hatta gimbal lock ile sorununuzun bir alakası yok ama blueprint ile oluşturabilirsiniz.
 
[UETR]Khubur' Alıntı:
Dinamik Duvar derken tam olarak ne yapmak istiyorsunuz ben anlayamadım. Kendi sorunuz ile ilgili bir resim ya video yollarsanız daha iyi anlayabiliriz. Lütfen sorunuzu olabildiği kadar basit ve net anlatın.

Yapmak istediğiniz şeyi nasıl yapıyorsunuz mesela Linetrace ile mi uyguluyorsunuz vs...

[UETR]Ozzy' Alıntı:
Sorununuzun bir videosunu atarsanız daha net yardımcı olabiliriz. Anladığım kadarıyla karakterinizin mouse konumuna göre rotasyonunu değiştirdiğiniz zaman uzak taraftan dönmesi mi? Ekstra olarak blueprint ile bu sorunu çözebilirsiniz hatta gimbal lock ile sorununuzun bir alakası yok ama blueprint ile oluşturabilirsiniz.

Videonun ilk 25 saniyesindeki açılar olmasını istediğim gibi çalışıyor. Ancak sonrasındaki bozulma olayı sorun. Amacım duvarın her zaman ilk baştaki gibi "U" çizebilmesi

// Video Silindi //
 
Herhangi bir grid(ızgara) sistemine sahip misiniz? Bunun gibi inşa uygulamaları farklı karelerin birleşimi sonucuyla elde ediliyor. Spline Mesh çiziyor gibisiniz.
 
[UETR]Khubur' Alıntı:
Herhangi bir grid(ızgara) sistemine sahip misiniz? Bunun gibi inşa uygulamaları farklı karelerin birleşimi sonucuyla elde ediliyor. Spline Mesh çiziyor gibisiniz.

Grid veya spline kullanmadım. Herhangi bir şeye bağlı olmayan tamamen özgür bir inşa sistemi.
 
Kullandığınız mouse 2 boyutlu bir sisteme sahip ve siz bunu 3 boyutlu bir sisteme (World) yansıtıyorsunuz. Bu gimbal lock yaşamanıza sebep olur. Kullandığınız rotation'lar euler koordinat sistemi bazlı olduğu için gimbal lock kaçınılmaz olur bu durumda.

Gimbal lock ile ilgili güzel bir açıklama var burada: https://www.opengl.org/discussion_boards/showthread.php/159245-help-me-understand-gimbal-lock

Bu durumda iki çözüm yolunuz var;

Birincisi o duvarın açısını an ve an ekrana print edip kırılma noktasını tespit etmeniz. Sonrasında açının o kırılma noktasına özel if/else şeklinde özel durumlar tanımlamanız lazım, bu sayede açıyı kırılma noktası esnasında kontrol altında tutabilirsiniz. (Mesela 180'den sonra 180.0...001 olduğu an açı kırılma yaşıyor, bu durumu kontrol edip açıyı eski haline getirebilirsiniz)

İkinci olarak, euler bazlı rotationlar kullanmak yerine Quaternion kullanabilirsiniz. Quaternionlar, sisteminizin boyut sayısından bağımsız bir şekilde rotation değerlerini saklayabildiği için gimbal lock sorunu yaşamazsınız:

https://api.unrealengine.com/INT/API/Runtime/Core/Math/FQuat/index.html
http://api.unrealengine.com/INT/API/Runtime/Core/Math/FRotator/Quaternion/index.html

İkinci yöntem biraz daha üst düzey matematik bilgisi istemekte, ilk yolu denemenizi tavsiye ederim bu sebeple Quaternion'lar hakkında bilginiz yoksa. Quaternionlar ile ilgili deneyiminiz varsa kesinlikle ikinci yolu deneyin, bir daha böyle bir sorunla karşılaşmazsınız, kafanız rahat olur :)
 
dyanikoglu' Alıntı:
Kullandığınız mouse 2 boyutlu bir sisteme sahip ve siz bunu 3 boyutlu bir sisteme (World) yansıtıyorsunuz. Bu gimbal lock yaşamanıza sebep olur. Kullandığınız rotation'lar euler koordinat sistemi bazlı olduğu için gimbal lock kaçınılmaz olur bu durumda.

Gimbal lock ile ilgili güzel bir açıklama var burada: https://www.opengl.org/discussion_boards/showthread.php/159245-help-me-understand-gimbal-lock

Bu durumda iki çözüm yolunuz var;

Birincisi o duvarın açısını an ve an ekrana print edip kırılma noktasını tespit etmeniz. Sonrasında açının o kırılma noktasına özel if/else şeklinde özel durumlar tanımlamanız lazım, bu sayede açıyı kırılma noktası esnasında kontrol altında tutabilirsiniz. (Mesela 180'den sonra 180.0...001 olduğu an açı kırılma yaşıyor, bu durumu kontrol edip açıyı eski haline getirebilirsiniz)

İkinci olarak, euler bazlı rotationlar kullanmak yerine Quaternion kullanabilirsiniz. Quaternionlar rotation sisteminizin boyut sayısından bağımsız bir şekilde değerleri sakladığı için gimbal lock sorunu yaşamazsınız:

https://api.unrealengine.com/INT/API/Runtime/Core/Math/FQuat/index.html
http://api.unrealengine.com/INT/API/Runtime/Core/Math/FRotator/Quaternion/index.html

İkinci yöntem biraz daha üst düzey matematik bilgisi istemekte, ilk yolu denemenizi tavsiye ederim bu sebeple Quaternion'lar hakkında bilginiz yoksa.

Öncelikle teşekkür ederim.

Bende tam olarak bundan bahsediyordum. Sonradan ihtiyaç duyabilecek arkadaşlar için siz daha iyi açıklamışsınız. Öncedende söylediğim gibi kırılma noktalarını yakalayarak iflerle yönlerdirmeyi denedim ancak motorun geneli 3 boyutlu sistemde 2 boyutlu rotasyon üzerine kurulu olduğu için quat kütüphanesi olmadan ya gerçekten yazılım abartı derecede if'e boğulmalı ki kesin bir sonuç alınabileceğini sanmıyorum, yada bu işi en doğru şekilde quat kütüphanesinden yararlanarak yapılmalı. Bu nedenle ve fps yükseltme nedeniyle blueprint ile devam etmemeye karar verdim. Şuan quat'a ulaşamıyorum ileride farklı kütüphanelere ihtiyaç duyabilirim ve yeniden ulaşamadığım bir kütüphaneye rastlayıp aynı olayları yaşamaktansa en baştan ve en doğru şekilde ilerlemek en iyisi.

Tekrardan teşekkür ederim. İyi çalışmalar...
 
UE4S' Alıntı:
[UETR]Khubur' Alıntı:
Herhangi bir grid(ızgara) sistemine sahip misiniz? Bunun gibi inşa uygulamaları farklı karelerin birleşimi sonucuyla elde ediliyor. Spline Mesh çiziyor gibisiniz.

Grid veya spline kullanmadım. Herhangi bir şeye bağlı olmayan tamamen özgür bir inşa sistemi.

Eğer soyutlama konusunda sizin istediğiniz gibi yaparsanız bunun gibi problemleri daha çok yaşarsınız. Herhangi bir ızgara(grid) sistemi olmadan strateji tabanlı bir oyun yapmak hiç mantıklı değil. Ayrıca bunun gibi yolla ilgili işlemler için en azından spline mesh kullanmanızı öneririm. Belirli gridlerde yaparsanız belirli bir birime sahip olacaksınız referans olarak takip eden bir yol için sağa ve sola dönmek için herhangi bir açı sorunu yaratmayacaksınız.

Gimbal Lock konusunda ise oyun dünyası bildiğiniz üzere 3 eksenlidir (x, y, z). Mouse konumunu lokasyon ve yön belirtir. Yön orjine göre olan uzaklığıdır lokasyon ise 2 boyutlu dünyada nerede durduğudur. Farenin yönü(direction) zaten size oyun dünyasındaki z eksenini verecek ve buna göre şekillenmiş olacak. Gimbal Lock ile bu durumun alaksı yok. Kilitlenen veya üst üste binen herhangi bir eksen yok. 

Eğer bir grid tabanlı sistem yapmazsanız bu yapay zekayı da muhtemelen etkileyecektir. O yüzden strateji oyunlarının bir çoğunda grid sistemi kullanılır.
 
[UETR]Khubur' Alıntı:
UE4S' Alıntı:
Grid veya spline kullanmadım. Herhangi bir şeye bağlı olmayan tamamen özgür bir inşa sistemi.

Eğer soyutlama konusunda sizin istediğiniz gibi yaparsanız bunun gibi problemleri daha çok yaşarsınız. Herhangi bir ızgara(grid) sistemi olmadan strateji tabanlı bir oyun yapmak hiç mantıklı değil. Ayrıca bunun gibi yolla ilgili işlemler için en azından spline mesh kullanmanızı öneririm. Belirli gridlerde yaparsanız belirli bir birime sahip olacaksınız referans olarak takip eden bir yol için sağa ve sola dönmek için herhangi bir açı sorunu yaratmayacaksınız.

Gimbal Lock konusunda ise oyun dünyası bildiğiniz üzere 3 eksenlidir (x, y, z). Mouse konumunu lokasyon ve yön belirtir. Yön orjine göre olan uzaklığıdır lokasyon ise 2 boyutlu dünyada nerede durduğudur. Farenin yönü(direction) zaten size oyun dünyasındaki z eksenini verecek ve buna göre şekillenmiş olacak. Gimbal Lock ile bu durumun alaksı yok. Kilitlenen veya üst üste binen herhangi bir eksen yok. 

Eğer bir grid tabanlı sistem yapmazsanız bu yapay zekayı da muhtemelen etkileyecektir. O yüzden strateji oyunlarının bir çoğunda grid sistemi kullanılır.

Euler koordinat sisteminde ne yapıyor olursanız olun, rotation'lar için quaternion ya da rotation matrixler yerine eksenler etrafında açı değerleri kullanırsanız ( "Rxyz = (30, 60, 30)" gibi.. ) eksenler illaki bir noktada üst üste gelir ve gimbal lock'a girersiniz.

Önceleri OpenGL ile mouse kontrollü kamera kodlamaları yaparken sıkça yaşadığım bir durumdu bu, o sebeple rahatlıkla gimbal lock ile ilgili olduğunu söyleyebilirim. Fark ettiyseniz 90 derecelik bir rotation'dan sonra eksenler üst üste geliyor ve bir adet degree of freedom kayboluyor, bu da duvarın bambaşka bir yere dönmesine sebep oluyor. Bu davranışın başka bir açıklaması olabilir mi? Varsa bizlerle paylaşırsanız sevinirim.
 
dyanikoglu' Alıntı:
[UETR]Khubur' Alıntı:
Eğer soyutlama konusunda sizin istediğiniz gibi yaparsanız bunun gibi problemleri daha çok yaşarsınız. Herhangi bir ızgara(grid) sistemi olmadan strateji tabanlı bir oyun yapmak hiç mantıklı değil. Ayrıca bunun gibi yolla ilgili işlemler için en azından spline mesh kullanmanızı öneririm. Belirli gridlerde yaparsanız belirli bir birime sahip olacaksınız referans olarak takip eden bir yol için sağa ve sola dönmek için herhangi bir açı sorunu yaratmayacaksınız.

Gimbal Lock konusunda ise oyun dünyası bildiğiniz üzere 3 eksenlidir (x, y, z). Mouse konumunu lokasyon ve yön belirtir. Yön orjine göre olan uzaklığıdır lokasyon ise 2 boyutlu dünyada nerede durduğudur. Farenin yönü(direction) zaten size oyun dünyasındaki z eksenini verecek ve buna göre şekillenmiş olacak. Gimbal Lock ile bu durumun alaksı yok. Kilitlenen veya üst üste binen herhangi bir eksen yok. 

Eğer bir grid tabanlı sistem yapmazsanız bu yapay zekayı da muhtemelen etkileyecektir. O yüzden strateji oyunlarının bir çoğunda grid sistemi kullanılır.

Euler koordinat sisteminde ne yapıyor olursanız olun, rotation'lar için quaternion ya da rotation matrixler yerine eksenler etrafında açı değerleri kullanırsanız ( "Rxyz = (30, 60, 30)" gibi.. ) eksenler illaki bir noktada üst üste gelir ve gimbal lock'a girersiniz.

Önceleri OpenGL ile mouse kontrollü kamera kodlamaları yaparken sıkça yaşadığım bir durumdu bu, o sebeple rahatlıkla gimbal lock ile ilgili olduğunu söyleyebilirim. Fark ettiyseniz 90 derecelik bir rotation'dan sonra eksenler üst üste geliyor ve bir adet degree of freedom kayboluyor, bu da duvarın bambaşka bir yere dönmesine sebep oluyor. Bu davranışın başka bir açıklaması olabilir mi? Varsa bizlerle paylaşırsanız sevinirim.

Ben herhangi bir eksenin üst üste bindiğini göremiyorum.  Gimbal Lock ile alakası yok. Fakat 180'lik açılar yetersiz kaldığından 180'den -180 e geçiş var. Bunun yerine açıları clamp ile kontrol ettirebilir fakat daha vahim bir durum herhangi bir grid sistemi olmaması. Hangi eksenlerin üst üste bindiğini ben göremedim.
 
[UETR]Khubur' Alıntı:
dyanikoglu' Alıntı:
Euler koordinat sisteminde ne yapıyor olursanız olun, rotation'lar için quaternion ya da rotation matrixler yerine eksenler etrafında açı değerleri kullanırsanız ( "Rxyz = (30, 60, 30)" gibi.. ) eksenler illaki bir noktada üst üste gelir ve gimbal lock'a girersiniz.

Önceleri OpenGL ile mouse kontrollü kamera kodlamaları yaparken sıkça yaşadığım bir durumdu bu, o sebeple rahatlıkla gimbal lock ile ilgili olduğunu söyleyebilirim. Fark ettiyseniz 90 derecelik bir rotation'dan sonra eksenler üst üste geliyor ve bir adet degree of freedom kayboluyor, bu da duvarın bambaşka bir yere dönmesine sebep oluyor. Bu davranışın başka bir açıklaması olabilir mi? Varsa bizlerle paylaşırsanız sevinirim.

Ben herhangi bir eksenin üst üste bindiğini göremiyorum.  Gimbal Lock ile alakası yok. Fakat 180'lik açılar yetersiz kaldığından 180'den -180 e geçiş var. Bunun yerine açıları clamp ile kontrol ettirebilir fakat daha vahim bir durum herhangi bir grid sistemi olmaması. Hangi eksenlerin üst üste bindiğini ben göremedim.

Zaten 180 ile -180 arasında değişen bir açıya, açıyı bloklamadan nasıl clamp uygulayacağını anlamadım açıkcası. Açıklayabilirmisin lütfen

Çünkü yeni duvarın bağlandığı duvarın açısı ne olursa olsun o açıya + / - 180 derece yapılması gerekiyor. Ancak bağlantı yapılacak duvar zaten 90 derecede duruyorsa eklenen duvarın 270 ile -90 derece arasında değişmesi gerekecek. Ondan sordum.

Bunun gimbal lock kullanmaksızın unrealdaki karşılığı -90 ile -90 derece olmuş oluyor yani açı -180 den +180 e geçişte sıfırlandığı için (ki unutulmamalı +180 ile -180 aynı nokta aynı açı aslında) yine spiral şekli ortaya çıkacaktır. Grid sistemi eklense bile duvar 270 dereceye hiç bir zaman ulaşamayacağı için mouse ile tile tespiti yapmak işe yaramayacaktır. Ki zaten tile dan alınacak veride xyz, mouse lokasyonundan alınacak veride xyz hiç bir fark yok yani. Bu arada gimbal lock olmaksızın yapmanın da bir yolunu dün akşam buldum ancak uzun süredir aynı yerde takılı kalmam nedeniyle şuan motoru açmaya bile üşenir hale geldim. O yöntemi uyguladığımda videosunu yeniden koyarım. 

Bulduğum yöntem işe yarasa bile bu işi yapmanın en doğru yolunun gimbal lock olduğunu gerçeğini değiştirmez zaten bulduğum yöntemde neredeyse Z rotasyonu üzerinden gimbal lock gibi tasarlanmış. Bulduğum yöntemi uygulayacak olmamın tek nedenide quat hesaplamalarıyla biraz uğraşayım dedim öyle uzaktan gözüktüğü gibi kolay değil... :)

Konuyla ilgilenen herkese teşekkürler.
 
180 dereceden -180 dereceye geçiş yapmadan önce eksenin rotasyonunu clamp ile sınırlayın. Geçişin değerlerini kontrol ettiğiniz sürece yarattığınız aktör veya her neyse başka bir yere geçiş yapamaz. 

Bunun gibi sorunları çözmek için önce soyutsal düşünmelisiniz. Bir grid sistemi yaratmalısınız. Kullanıcı bu gridlere tıkladığından itibaren mouse'un sürüklendiği gridler ile etkileşime girip ona göre tekrardan bloklarını şekillendirmesi gerekli. Zaten mouse tıklandığında linetrace ile bir vektör çizdirebilirsiniz. Linetraceden hit olduğu gridlere sahip olursunuz ve bu şekilde işleme alırsınız.

Ayrıca yol gibi şeyleri yapmanız için Spline Mesh kullanmanızı tavsiye ederim. Olay gerçekten basit, fakat yarattığınız sistemler oyun dünyası için soyutlanmamış.

Neyse bu konuya daha fazla yorum yazmayacağım. Size yaptığınız projede başarılar dilerim...