setVelocityTransformation: Difference between revisions
Jump to navigation
Jump to search
m (code fix) |
Killzone Kid (talk | contribs) (example) |
||
Line 35: | Line 35: | ||
[[vectorUp]] _nextVectorUp, | [[vectorUp]] _nextVectorUp, | ||
_timeDiff | _timeDiff | ||
]; | ];</code> |= Example 1 | ||
</code> |= Example | |||
|x2= Bob on imaginary stairway to heaven:<code>bob = [[createAgent]] ["C_man_1", [[player]] [[getRelPos]] [5, 0], [], 0, "CAN_COLLIDE"]; | |||
bob [[switchMove]] "ladderciviluploop"; | |||
pos1 = [[getPosASL]] bob; | |||
pos2 = pos1 [[vectorAdd]] [0,0,0.75]; | |||
bob [[addEventHandler]] ["AnimDone", | |||
{ | |||
pos1 = pos2; | |||
pos2 = pos2 [[vectorAdd]] [0,0,0.75] | |||
}]; | |||
[[onEachFrame]] | |||
{ | |||
[[if]] (![[alive]] bob) [[then]] | |||
{ | |||
[[onEachFrame]] {}; | |||
bob [[switchMove]] ""; | |||
bob [[removeAllEventHandlers]] "AnimDone"; | |||
}; | |||
bob [[setVelocityTransformation]] [ | |||
pos1, | |||
pos2, | |||
[0,0,0], | |||
[0,0,0], | |||
[0,1,0], | |||
[0,1,0], | |||
[0,0,1], | |||
[0,0,1], | |||
[[moveTime]] bob | |||
]; | |||
};</code> |= Example 2 | |||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
| [[velocity]], | | [[velocity]], [[velocityModelSpace]], [[setVelocity]], [[moveTime]] |= See also | ||
[[velocityModelSpace]], | |||
[[setVelocity]] |= See also | |||
}} | }} | ||
Revision as of 19:12, 12 March 2016
Description
- Description:
- Interpolate and sets vectors. For additional info see this resource.
- Groups:
- Uncategorised
Syntax
- Syntax:
- objectName setVelocityTransformation [position1, position2, velocity1, velocity2, direction1, direction2, up1, up2, time]
- Parameters:
- objectName: Object
- position1: Number
- position2: Number
- velocity1: Number
- velocity2: Number
- direction1: Number
- direction2: Number
- up1: Number
- up2: Number
- time: Number
- Return Value:
- Nothing
Examples
- Example 1:
_tracker setVelocityTransformation [ getPosASL _currentPos, getPosASL _nextPos, velocity _currentVelocity, velocity _nextVelocity, vectorDir _currentVectorDir, vectorDir _nextVectorDir, vectorUp _currentVectorUp, vectorUp _nextVectorUp, _timeDiff ];
- Example 2:
- Bob on imaginary stairway to heaven:
bob = createAgent ["C_man_1", player getRelPos [5, 0], [], 0, "CAN_COLLIDE"]; bob switchMove "ladderciviluploop"; pos1 = getPosASL bob; pos2 = pos1 vectorAdd [0,0,0.75]; bob addEventHandler ["AnimDone", { pos1 = pos2; pos2 = pos2 vectorAdd [0,0,0.75] }]; onEachFrame { if (!alive bob) then { onEachFrame {}; bob switchMove ""; bob removeAllEventHandlers "AnimDone"; }; bob setVelocityTransformation [ pos1, pos2, [0,0,0], [0,0,0], [0,1,0], [0,1,0], [0,0,1], [0,0,1], moveTime bob ]; };
Additional Information
Notes
-
Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
Notes
- Posted on Aug 4, 2014 – 12:35
- ffur2007slx2_5
-
(A3 1.24) Generally speaking setVelocityTransformation is more likely a combination of setPosASL, setVectorDirAndUp (or BIS_fnc_setPitchBank) and time multiplier. It can be used as a position tracker with all necessary information collected, copied and then released within one function. Here’s a simple reproduction on how setVelocityTransformation works in game:
private ["_dataOld","_dataNext","_capturedData","_obj","_fps","_startTrackingTime","_stepOld","_stepNext","_tracker","_tempTime"]; _stepOld = 0; _tempTime = 0; _stepNext = 1; while {true} do { _capturedData = _capturedData + [[ getPosASL _obj,velocity _obj,vectorDir _obj,vectorUp _obj]]; sleep _fps; _tempTime = _tempTime + _fps; if (_tempTime >= _startTrackingTime) then { _dataOld = _capturedData select _stepOld; _dataNext = _capturedData select _stepNext; _stepOld = _stepOld + 1; _stepNext = if (_stepNext >= (count _capturedData)) then [{_stepOld},{_stepNext + 1}]; _tracker setVelocityTransformation [_dataOld select 0,_dataNext select 0,_dataOld select 1,_dataNext select 1, _dataOld select 2,_dataNext select 2,_dataOld select 3,_dataNext select 3,1]; }; };
Tracker starts coping the route and stance from the object when time start counting. TimeDiff determines the distance multiply between the current position and the next position.
Bottom Section
Categories:
- Scripting Commands
- Introduced with Arma 2: Operation Arrowhead version 1.51
- Arma 2: Operation Arrowhead: New Scripting Commands
- Arma 2: Operation Arrowhead: Scripting Commands
- Command Group: Uncategorised
- Scripting Commands ArmA2
- Scripting Commands Arma 3
- Scripting Commands Take On Helicopters
- ArmA 2 OA: New Scripting Commands List