Köszönöm a segítségeiteket; úgy látszik, a megfelelő átváltó függvényt (deg2rad) kellett a megfelelő értékhez (l.rotation_degrees) írni. Csak annyira bekavar nekem, hogy mi van szögben, mi fokban és hová mi kell.
Köszönöm Nils és Petya, de ezeket ha jól emlékszem, már kipróbáltam. Bár lehet, az bonyolítja nálam a helyzetet, hogy a robotkar XY koordinátája el van tolva a sprite jobb szélére balról, tehát 0-tól eltérő offset értéke van (negatív számok)?
Igen, GDscript-ben írtam és olvastam is azt az oldalt.
Most így "oldottam meg" átmenetileg a problémát, de ez nyilván csak félmegoldás, mert kell lennie rá egy egy vagy kétsoros, sokkal egyszerűbb kódnak is:
func _process(delta): if (Input.is_mouse_button_pressed(BUTTON_LEFT) and get_node("../jatekosrobotja/robotkarja/robotfegyvere").lohet==true): if get_global_mouse_position().x<=position.x+32 and get_global_mouse_position().x>=position.x-32 and get_global_mouse_position().y<=position.y+32 and get_global_mouse_position().y>=position.y-32: var l=lovedek.instance() get_parent().add_child(l) var robotkar=get_node("../jatekosrobotja/robotkarja") var robotkarkep=get_node("../jatekosrobotja/robotkarja/robotfegyvere") l.rotation_degrees=robotkar.rotation_degrees-180 #l.position.x=robotkar.position.x-robotkarkep.texture.get_size().x*cos(robotkarkep.robotkarirany) #l.position.y=robotkar.position.y-robotkarkep.texture.get_size().y*sin(robotkarkep.robotkarirany) #l.position.x=robotkar.position.x+cos(deg2rad(360-l.rotation_degrees))*robotkarkep.texture.get_size().x #l.position.y=robotkar.position.y+sin(deg2rad(360-l.rotation_degrees))*robotkarkep.texture.get_size().y match robotkarkep.robotkarirany: 90: l.position.x=robotkar.position.x l.position.y=robotkar.position.y-robotkarkep.texture.get_size().x 135: l.position.x=robotkar.position.x-robotkarkep.texture.get_size().x+robotkarkep.texture.get_size().y l.position.y=robotkar.position.y-robotkarkep.texture.get_size().y*2 180: l.position.x=robotkar.position.x-robotkarkep.texture.get_size().x l.position.y=robotkar.position.y+robotkarkep.offset.y 225: l.position.x=robotkar.position.x-robotkarkep.texture.get_size().x+robotkarkep.texture.get_size().y/2 l.position.y=robotkar.position.y+robotkarkep.texture.get_size().y*1.5 270: l.position.x=robotkar.position.x l.position.y=robotkar.position.y+robotkarkep.texture.get_size().x get_node("../TextureRect").lovedektomb.append(l) robotkarkep.lohet=false robotkarkep.lovidozito.wait_time=1 robotkarkep.lovidozito.start()
Annyit érdemes még tudni, hogy a robotkarkep sprite XY koordinátája nem középen vagy bal oldalon, hanem jobb oldalon van, hogy rendesen a kar tövétől lehessen elforgatni.
Van egy robotkar, amely 90-270 fok között mozoghat, 45 fokos lépésekben. A robotkar hosszúsága adott és persze az, hogy éppen mekkora fokban mozdult el, valamint az XY koordinátája, ami a tövénél van. Ebből kellene kiszámítani a kilőtt lövedék kezdeti koordinátáját, tehát hogy mindig a robotkar által tartott fegyver csövénél jöjjön ki. A fegyver és a robotkar egyetlen grafikus képet alkot, nem külön vannak. Egyébként Godot fejlesztőkörnyezettel készítem a programot.
Köszönöm; majdnem jó, mert a második objektum most, az utolsó mondatodban megadott képletet alkalmazva önmaga körül forog, és az istennek sem bírom rávenni, hogy ez a forgás egy másik koordináta (az első objektumé) körül legyen.
> ha ismerünk egy irányt és annak hosszát, Tegyük fel, hogy vektorra gondolsz, annak van hossza és iránya.
> akkor ezekből meg lehet-e állapítani, hogy egy 2D-s koordináta rendszerben mely XY pozícióra mutat Ha megadsz egy kezdőpontot, ahonnan induljon a vektorod, akkor igen.
> és ha igen, akkor hogyan, milyen képlet van rá? mondjuk ha kezdőpont=(ax,ay) és vektor=(vx,vy), akkor végpont=(ax+vx,ay+vy)
Namostan, ha azt akarod mondani, hogy a vektorod hossz=r, szög=φ adatokkal van megadva, akkor vx=r*cosφ, vy=r*sinφ
Nem tudom, hogy a következő kérdésem mennyire érdekes számotokra, de remélem, hogy könnyű és meg tudjátok válaszolni. Szóval, mindössze annyi az egész röviden és tömören, hogy ha ismerünk egy irányt és annak hosszát, akkor ezekből meg lehet-e állapítani, hogy egy 2D-s koordináta rendszerben mely XY pozícióra mutat és ha igen, akkor hogyan, milyen képlet van rá?
Ahhoz kellene ez nekem, hogy egy objektumot a programomban mindig egy másiktól adott irányban és távolságban hozzak létre.
abszolút kezdő vagyok, a következőhöz szeretnék tanácsot kérni.
Win10-ben szeretnék egy makrót írni. A célja, hogy a következő billentyű szekvenciát egy custom hotkey-jel vagy egyéb egyszerű trigger-rel végrehajtsa, akár végtelenített hurokban (amíg meg nem állítom), akár lépésekben.
Adott két ablak, az egyik az Excel, a másik egy másik app. Excel-ből indulok:
CTRL+C => ALT+TAB => CTRL+V => ENTER => ALT+TAB => LE
Ezt Power Shell-el meg lehet csinálni?
A rengeteg manuális átmásolást szeretném megspórolni.
Sziasztok SDL_net-tel szeretném (C++) megoldani hogy a játék elején az én gépem (szerver) elküldje az megfelelő adatokat a többi játékosnak az ő gépükre és a játék végén vagy közben 1-1 játékostól pedig adatokat kérnék be. Az adatok azok vagy számok lennének 1-20 max vagy karakterek. Azonban még sose foglalkoztam ilyesmivel. A játékrészt SDL-ben megtudom csinálni. De ezzel a hálózati résszel nem sikerült semmire se jutnom. Tudna valaki ebben segíteni? Találtam jó pár példa programot de valahogy egyiket se sikerült működésre bírnom.
Én a két pontot összekötő húr hosszával számolnék és az erők vektoriális összegének venném az érintősíkon a vetületét. A főkörökön mért távolságnál mind a két ívvel számolni kellene, különben nem jön ki, hogy a két átellenes ponton levő elektronok nem mozdulnak.
Na nézzük csak ... A(200,0,0) és B(0,200,0) és C(0,0,200) pontokon található elektronok hogyan hatnak a X(-115,115,-115) pontban található elektronra akkor, ha az erővonalak a gömbhéjon futnak.
Igazad van, akkor ezeknek az erőknek az eredője adja meg az elmozdulás irányát.
Akkor kiszámolom mindegyik pontra az elmozdulás irányát és abba az irányba mozgatom 1 egységgel, majd amikor odaért, akkor megint kiszámolom és elmozdítom most már az új irányba. Az egészet addig folytatom, amíg a egyes pontokra ható erők eredője eléggé kicsi lesz. Nem túl bonyolult ez? Gömbfelületen futó "egyenesek" eredőjét számolni?
Tehát véletlenszerűen elhelyezek pontokat, véletlenszerű mozgást adok nekik és amikor az egymástól való távolságok összege a legnagyobb, akkor megállítom a ciklust. Pontosabban nem is véletlenszerű mozgás kell, hanem olyan mozgás, amivel távolodik a többitől. Tehát minden egyes ponthoz megkeresem azt az irányt, amely irányba egy egységnyi elmozdulással a legnagyobb távolságra kerül a többitől. Talán nem kell 360 féle irányra kiszámolni, lehet hogy elég lesz 24-re (15 fokonként).
Nem lehetne esetleg kiteríteni valahogy a gömbfelületet a síkba és arra szétszórni a pontokat? Vagy felosztani szabályos "háromszögekre" a gömbfelületet?
Érdekes programozási feladat ... így elsőre nekem egy bonyolult geometriai problémának tűnik, de lehet, hogy van rá olyan algoritmus, amivel egyszerűbben megoldható.
Egy gömb felületére kéne meghatározott darab pontot egyenletesen szétszórni.
Nem tudom, hogy a teljes teret egy pontból kiindulva hogy lehet egyenlő részekre osztani.