Diese Funktion gibt den den Punkt zurück der im gewählten relativen Abstand zu einer Entity ist.
Die Parameter (_entity, _range[, _currPos])
_entity : Ist die Person, Gebäude zu deren Blickrichtung ein Punkt erwünscht ist. _range : Ist die Entfernung _currPos : Die Position auf der man sich befindet.
Rückgabe ist der Punkt. Siehe Anwendungsbeispiel.
function ZurEntity(_entity, _range, _currPos) if type (_entity) == "table" then Message("Keine Position sondern Entity angeben") -- ein Punkt hat keine Blickrichtung return nil end if type (_entity) == "string" then _entity = GetEntityId(_entity); end local tPos = GetPosition(_entity) if _currPos == nil then _currPos = tPos elseif type (_currPos) == "string" or type (_currPos) == "number" then _currPos = GetPosition(_currPos) end local nEntityAngle=Logic.GetEntityOrientation(_entity); local nSin=math.sin((math.rad(nEntityAngle))); local nCos=math.cos((math.rad(nEntityAngle))); local tPos = GetPosition(_entity) return {X=_currPos.X-nCos*_range,Y=_currPos.Y-nSin*_range}; -- Rückgabe = neue Position end
CreateEntity(1, Entities.PU_Serf , ZurEntity("BauernHof_XYZ",-1500),"Serf1")
Jetzt erscheint ein Serf im Abstand von 1500 in der Mitte vor dem Bauernhof. Egal wie der Bauernhof steht.
Move ("Serf1", ZurEntity("BauernHof_XYZ",-1500,"Serf1"))
Jetzt läuft er zu dem Punkt der 1500 vor dem Bauernhof ist, aber relativ von seiner Position.