ApplyForce
Ich möchte euch erklären wie ApplyForce funktioniert
dazu schauen wie uns mal ein thruster an:
wie sehen ein feuerstrahl und eine düse mehr nicht
die funktion ist noch unbekannt
wie jeder weiss
schiebt ein thruster immer in die entgegengesetzte richtung von dem strahl der raus kommt
das nennt man schubkraft
das gleiche geht mit applyforce
mit applyforce könnt ihr euch eure thruster sparen
obwohl es das gleiche (in dem fall ist der thruster dann das auserwählte entity)
wie ist die applyforce funktion aufgebaut?
ganz einfach
das entity wo vor der funktion ausgewählt wird in dem fall der chip (entity())
also wird der chip als thruster funktionieren
nun das applyforce (der funktionsname) eigentlicht ganz einfach
applyForce heißt auch im deutschen sezte schubkraft und die funkion heißt dann prop setzt schubkraft auf position x
nun das zeug in den klammern:
das ist bei applyforce ein vector
ein vecotr besteht aus floats
floats ( in gmod sind es zahlen) sind wie gesagt nur zahlen die durch ein . feingetuned werden
machen wir ein beispiel..
was macht diese funktion
PHP-Quelltext
1
entity():applyForce(entity():up())
keine ahnung?
ok das heißt prop setzt schubkraft auf des props oberseite
also fliegt es nach oben ( halt da wo die oberseite ist)
wäre die nach unten würde es sich in den boden drücken
nächster schritt:
verstärkung (force)
umsohöher die force ist desto schneller fliegt es
logisch wie der multiplyer bei einem thruster
in dem fall halt als" buchstaben zeichen und zahlen"
bei unserem code von oben füge ich nun das 10000 fache an stärke dazu dann siehts so aus:
PHP-Quelltext
1
entity():applyForce(entity():up()*10000)
nun wird es um das 10000 fache verstärkt
das wars eigentlich fürs erste
nun wollen wir das das entity über uns schwebt..
"der spannende teil"
dazu muss das e2 ein bisschen rechnen
und wir was schreiben
als erstes
kommt eine variable hin wo definiert wird wo man ist
also
PHP-Quelltext
1
IST=entity():pos()
dann eine wo man hin will
also
PHP-Quelltext
1
SOLLHIN=owner():pos()+vec(0,0,100)
nun ist die zielposition 100 inch über dem spieler
jetz lassen wir das e2 rechnen
(SOLLHIN - IST)*Force
die rechnung ist simple aber man darf sie nicht vertauschen (also SOLL und ist sonst fliegt des entity weg)
wer in der schule war versteht was ich da meine mit der rechnung
also
nun zum code für unsern überspieler verfolger
der lautet so:
PHP-Quelltext
1
2
3
IST=entity():pos()
SOLLHIN=owner():pos()+vec(0,0,100)
entity():applyForce((SOLLHIN-IST)*10000)
fertig
nun schwebt es übereuch............... oder doch nicht?
denn eines habt ihr vergessen das vergesse ich aber auch sehr oft
das runOnTick(1)
das startet den chip jeden gametick neu
brauch viel Ops (ops sind sowas wie % bei einem prozesse im taskmanager nur halt in gmod übersetzt; operationen pro sek. also ausführungen pro sek.)
neber dem up() gibt es noch forward und right um links nach hinten oder runter zu fliegen müsst ihr einfach ein - vor entity():...() machen
Specials:
es ibt sowas wie smoothing bei applyforce
dazu rechnet man die force - geschwindigkeit
also nehme ich den alten code
PHP-Quelltext
1
entity():applyForce((entity():up())-entity():vel())
vel() ist die velocity also die geschwindigkeit (NICHT IN KMH sondern in inch pro sek. (glaub ich mal))
und *entity():mass() einfach hinter die 10000 machen dann nimmt der die 10000 mal die masse des entitys das auserwählt ist