BIS fnc setPitchBank: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (1 revision)
m (Text replacement - "= <code>([^<{]+)<\/code>" to "= <sqf>$1</sqf>")
 
(31 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{RV|type=function


{{Function|= Comments
|game1= arma2
____________________________________________________________________________________________
|version1= 1.00


| arma2 |= Game name
|game2= arma2oa
|version2= 1.50


|1.00|= Game version
|game3= tkoh
____________________________________________________________________________________________
|version3= 1.00


| <pre>
|game4= arma3
/************************************************************
|version4= 0.50
Set Pitch and Bank


Parameters: [object, pitch, bank]
|gr1= Object Manipulation
Returns: nothing


Rotates an object, giving it the specified pitch and bank,
|descr= Rotate an object, giving it the specified pitch and bank, in degrees.<br>
in degrees.
'''Pitch''' is 0 when the object is level; 90 when pointing straight up; and -90 when pointing straight down.<br>
'''Bank''' is 0 when level; 90 when the object is rolled to the right, -90 when rolled to the left, and 180 when rolled upside down.<br>
Note that the object's '''yaw''' can be set with the [[setDir]] command, which should be issued before using this function, if required.<br>
The pitch/bank can be leveled out (set to 0) by using the [[setDir]] command.


Pitch is 0 when the object is level; 90 when pointing straight
|s1= [object, pitch, bank] call [[BIS_fnc_setPitchBank]]
up; and -90 when pointing straight down.


Bank is 0 when level; 90 when the object is rolled to the right,
|p1= object: [[Object]]
-90 when rolled to the left, and 180 when rolled upside down.


Note that the object's yaw can be set with the setdir command,
|p2= pitch: [[Number]]
which should be issued before using this function, if required.


The pitch/bank can be leveled out (set to 0) by using the
|p3= bank: [[Number]]
setdir command.


Example: [player, 45, -45] call BIS_fnc_setPitchBank
|r1= [[Nothing]]
************************************************************/


//extract parameters
|x1= <sqf>[player, 45, -45] call BIS_fnc_setPitchBank;</sqf>
</pre><small>''(Placeholder description extracted from the function header by [[BIS_fnc_exportFunctionsToWiki]])''</small> |= Description
____________________________________________________________________________________________


| <!-- [] call [[BIS_fnc_setPitchBank]]; --> |= Syntax
|seealso= [[BIS_fnc_getPitchBank]] [[vectorDir]] [[vectorUp]] [[setVectorDirAndUp]]
 
}}
|p1= |= Parameter 1
 
| |= Return value
____________________________________________________________________________________________


|x1= <code></code> |=  
{{Note
____________________________________________________________________________________________
|user= ffur2007slx2_5
 
|timestamp= 20140804133500
| |= See also
|text= {{Feature|informative|See also [[BIS_fnc_setObjectRotation]].}}


(A3 1.24) [[attachTo]] limits [[BIS_fnc_setPitchBank]], here’s an alternative function to break that limitation (code originated from [[bapedibupa]]):
<sqf>
_obj attachTo [_logic,[0,0,2]];
[_obj,[120,-78,37]] call fnc_SetPitchBankYaw; // pitch: 120, bank: -78, yaw: 37
</sqf>
<sqf>
fnc_SetPitchBankYaw = {
private ["_object","_rotations","_aroundX","_aroundY","_aroundZ","_dirX","_dirY","_dirZ","_upX","_upY","_upZ","_dir","_up","_dirXTemp",
"_upXTemp"];
_object = _this select 0;
_rotations = _this select 1;
_aroundX = _rotations select 0;
_aroundY = _rotations select 1;
_aroundZ = (360 - (_rotations select 2)) - 360;
_dirX = 0;
_dirY = 1;
_dirZ = 0;
_upX = 0;
_upY = 0;
_upZ = 1;
if (_aroundX != 0) then {
_dirY = cos _aroundX;
_dirZ = sin _aroundX;
_upY = -sin _aroundX;
_upZ = cos _aroundX;
};
if (_aroundY != 0) then {
_dirX = _dirZ * sin _aroundY;
_dirZ = _dirZ * cos _aroundY;
_upX = _upZ * sin _aroundY;
_upZ = _upZ * cos _aroundY;
};
if (_aroundZ != 0) then {
_dirXTemp = _dirX;
_dirX = (_dirXTemp* cos _aroundZ) - (_dirY * sin _aroundZ);
_dirY = (_dirY * cos _aroundZ) + (_dirXTemp * sin _aroundZ);
_upXTemp = _upX;
_upX = (_upXTemp * cos _aroundZ) - (_upY * sin _aroundZ);
_upY = (_upY * cos _aroundZ) + (_upXTemp * sin _aroundZ);
};
_dir = [_dirX,_dirY,_dirZ];
_up = [_upX,_upY,_upZ];
_object setVectorDirAndUp [_dir,_up];
};
</sqf>
}}
}}
<h3 style="display:none">Notes</h3>
<dl class="command_description">
<!-- Note Section BEGIN -->
<!-- Note Section END -->
</dl>
<h3 style="display:none">Bottom Section</h3>
[[Category:Function Group: Objects|{{uc:setPitchBank}}]]
[[Category:Functions|{{uc:setPitchBank}}]]
[[Category:{{Name|arma2}}: Functions|{{uc:setPitchBank}}]]
[[Category:{{Name|arma2oa}}: Functions|{{uc:setPitchBank}}]]
[[Category:{{Name|tkoh}}: Functions|{{uc:setPitchBank}}]]
[[Category:{{Name|arma3}}: Functions|{{uc:setPitchBank}}]]

Latest revision as of 18:00, 13 July 2022

Hover & click on the images for description

Description

Description:
Rotate an object, giving it the specified pitch and bank, in degrees.
Pitch is 0 when the object is level; 90 when pointing straight up; and -90 when pointing straight down.
Bank is 0 when level; 90 when the object is rolled to the right, -90 when rolled to the left, and 180 when rolled upside down.
Note that the object's yaw can be set with the setDir command, which should be issued before using this function, if required.
The pitch/bank can be leveled out (set to 0) by using the setDir command.
Execution:
call
Groups:
Object Manipulation

Syntax

Syntax:
[object, pitch, bank] call BIS_fnc_setPitchBank
Parameters:
object: Object
pitch: Number
bank: Number
Return Value:
Nothing

Examples

Example 1:
[player, 45, -45] call BIS_fnc_setPitchBank;

Additional Information

See also:
BIS_fnc_getPitchBank vectorDir vectorUp setVectorDirAndUp

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
ffur2007slx2_5 - c
Posted on Aug 04, 2014 - 13:35 (UTC)

(A3 1.24) attachTo limits BIS_fnc_setPitchBank, here’s an alternative function to break that limitation (code originated from bapedibupa):

_obj attachTo [_logic,[0,0,2]]; [_obj,[120,-78,37]] call fnc_SetPitchBankYaw; // pitch: 120, bank: -78, yaw: 37
fnc_SetPitchBankYaw = { private ["_object","_rotations","_aroundX","_aroundY","_aroundZ","_dirX","_dirY","_dirZ","_upX","_upY","_upZ","_dir","_up","_dirXTemp", "_upXTemp"]; _object = _this select 0; _rotations = _this select 1; _aroundX = _rotations select 0; _aroundY = _rotations select 1; _aroundZ = (360 - (_rotations select 2)) - 360; _dirX = 0; _dirY = 1; _dirZ = 0; _upX = 0; _upY = 0; _upZ = 1; if (_aroundX != 0) then { _dirY = cos _aroundX; _dirZ = sin _aroundX; _upY = -sin _aroundX; _upZ = cos _aroundX; }; if (_aroundY != 0) then { _dirX = _dirZ * sin _aroundY; _dirZ = _dirZ * cos _aroundY; _upX = _upZ * sin _aroundY; _upZ = _upZ * cos _aroundY; }; if (_aroundZ != 0) then { _dirXTemp = _dirX; _dirX = (_dirXTemp* cos _aroundZ) - (_dirY * sin _aroundZ); _dirY = (_dirY * cos _aroundZ) + (_dirXTemp * sin _aroundZ); _upXTemp = _upX; _upX = (_upXTemp * cos _aroundZ) - (_upY * sin _aroundZ); _upY = (_upY * cos _aroundZ) + (_upXTemp * sin _aroundZ); }; _dir = [_dirX,_dirY,_dirZ]; _up = [_upX,_upY,_upZ]; _object setVectorDirAndUp [_dir,_up]; };