Soru & Cevap

App inventor 2

25.11.2018 - 12:47

App inventor 2 de bir objeyi ( sprite ) canvasta tıkladığım yere speed 1 olacak şekilde ve heading değişmiyecek ( sprite heading i sabit kalacak yani objenin dönmesini istemiyorum ) nasıl yönlendirebilirim. Tam olarak objeyi bir kordinat sisteminde bir noktadan bir diğer noktaya taşımak istiyorum burda speed 1 olunca sürekli sabit olarak bir yere doğru gidiyor. Biraz araştırdım ama bulamadım fazla bilgi yok ama sanırım burda Arc, Cos, Sin işlev görecek ama kafamdakini tam olarak gerçekleştiremiyorum. Tam anlaşılması için bir üçgen üzerinde anlatim isterseniz. --ABC bir dik üçgen olsun B dik açı ben A dan C ye yada C den A ya  gitmek istiyorum burada kullanılacak en kısa yol Hipotenüs yani tam yapmak istedigim Objeyi hipotenüsten yürütmek. Cevaplar için şimdiden teşekkür ederim.

17 Görüntülenme

7 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-158072-1530701953.jpg
TGUNEYSU
29.11.2018 - 11:31

Y yönündeki hızlanma uygulanan çizgi formülü ile ilgili. Çizginin eğimi  Y = M * X + B formülü ile hesaplanıyor. Buna göre M eğim  faktörü demek ve ( Y2 - Y1) / (X2 - X1) formulü ile uygulanıyor. B ise çizginin Y aksi ile kesiştiği nokta, yani X = 0  değeri. Bunları koddaki formüllerde göreceksiniz.

Simdi Y yönünde hızlanmanın sebebi de şöyle anlaşılır - örneğin:  bir çizgi sağdan sola az bir eğim ile gidiyorsa, X yönünde bir sürü değerden oluşacaktır. 

Fakat aynı çizgi gayet dik bir eğimle giderse, daha da az X değerler kat edecektir. Kod her bir X değer için hem M hem de B değerlerini hesaplayıp Sprite'ı ona göre oynattığı için, çizgi eğimi yüksek olduğunda ve daha az X olmasından dolayı aşağı ve yukarı daha hızlı hareket ediyor.

Bunu oranlı bir şekilde çözme yolu M eğim faktörünü çizgi dik olduğu zamanlar daha fazla ondalık değerlerle hesaplayıp X değer sayılarını çoğaltmak.

Fazla zor değil ama bir az uğraştırır. Çözeceğinizden eminim.

TG

picture-158072-1530701953.jpg
TGUNEYSU
29.11.2018 - 03:18

emaille yollandi.

Sergen
29.11.2018 - 08:56
Evet ulaştı. Teşekkür ederim TURGUT bey. Biraz karmaşık biraz üzerinde oynamam lazım :) birde y konumunda tam dik inişlerde aniden hızlanma oluyor orda sanırım değer 0 geliyor ama halletmeye çalışacam tekrar teşekkür ederim.
picture-187464-1543160432.jpg
srgnsylmz
29.11.2018 - 10:07

Turgut bey link erişim izni istiyor. Ekran fotoğrafı ekte. srgnsylmz@yandex.com adresinede gönderebilirsiniz.

/sites/default/files/cevaplar/dosya/2020/file-img_20181208_100430.jpg
picture-158072-1530701953.jpg
TGUNEYSU
29.11.2018 - 09:43
Link açılıyor. Doğru kopyalamamışsınız. Parantez arasını tekrar deneyin. Parantezler hariç. [https://drive.google.com/uc?export=download&id=1FLlfhhPw8j-DzhhiASHy5viJ4Attbql4]
picture-158072-1530701953.jpg
TGUNEYSU
28.11.2018 - 03:38

Kusura bakmayın, yanlış anlamışım.

Şuna bir bakın, galiba istediğiniz gibi: https://drive.google.com/uc?export=download&id=1FLlfhhPw8j-DzhhiASHy5viJ4Attbql4

İki noktalı çizgi formülü algoritmasını uyguluyor:  (Y2-Y1) = M (X2-X1)  

Gerekirse şuradan inceleyebilirsiniz: https://www.mathsisfun.com/algebra/line-equation-2points.html

Eğer kullanmak isterseniz, M hesaplayan formüle bir sıfır kontrolu koymak lazım. Vaktim olmadı. X1 ve X2 aynı olunca sonuc sıfır oluyor ve yanlış veriyor.

Bunu bir IF le düzeltirseniz doğru çalışır.

 

Sergen
28.11.2018 - 06:40
driver da verdiğiniz açılmadı. Örnek bir blok oluşturursanız sevinirim. Gerçekten karmaşık bir olay :)
picture-187464-1543160432.jpg
srgnsylmz
27.11.2018 - 11:05

TURGUT bey öncelikle cevabınız için teşekkür ederim. Lakin bu işlemi daha öncede yapmıştım benim tam olarak istediğim bu değil. Bu işlemi yapınca sprite anlık yer değiştiriyor benim ise istediğim bir anda yer değiştirmesin de, belirli bir hızda ilerlesin örneğin: speed 2 olacak şekilde ilerlesin yani ekranda bir yere bastığımda sprite yavaş yavaş hareket ederek tıkladığım noktaya gelsin istiyorum.

picture-158072-1530701953.jpg
TGUNEYSU
27.11.2018 - 10:14

Önce SPRİTE ayarlarında ROTATES seçiminin kaldırıldığını kontrol edin. Yani check olmasın.

Sonra CANVAS kodlamasında whenCanvas1.Touched bloku içine CallİmageSprite1.MoveTo blokunu koyup X ve Y ayarlarını CANVAS blokunun X ve Y ayarları ile atayın. 

Şimdi CANVASın neresine dokunursanız SPRİTE oraya gidecek ve etrafında dönmeyecek.

Link: https://drive.google.com/open?id=1DRq4gtLEJZTlkAKxHzbHvOy9qcjeIuZq  

İyi Çalışmalar.

 

Sergen
27.11.2018 - 11:08
TURGUT bey öncelikle cevabınız için teşekkür ederim. Lakin bu işlemi daha öncede yapmıştım benim tam olarak istediğim bu değil. Bu işlemi yapınca sprite anlık yer değiştiriyor benim ise istediğim bir anda yer değiştirmesin de, belirli bir hızda ilerlesin örneğin: speed 2 olacak şekilde ilerlesin yani ekranda bir yere bastığımda sprite yavaş yavaş hareket ederek tıkladığım noktaya gelsin istiyorum.