Fandom

武装突袭 Wiki

DrawIcon3D

简体 | 繁體

4,827个页面创建
于此维基上
添加新页面
评论0 Share

您使用了广告屏蔽软件!


Wikia通过广告运营为用户提供免费的服务。我们对用户通过嵌入广告屏蔽软件访问网站进行了使用调整。

如果您使用了广告屏蔽软件,将无法使用我们的服务。请您移除广告屏蔽软件,以确保页面正常加载。

Introduced with Arma 3 version 0.50
  

点击图片可看到更多讯息

开始使用于

游戏:
Arma 3
版本:
0.50

描述

描述:
Draws an ingame icon at a given position. Command has to be executed each frame. Use onEachFrame or addMissionEventHandler "Draw3D"

基本句法

句法:
drawIcon3D [texture, color, pos, width, height, angle, text, shadow, textSize, font, textAlign, drawSideArrows]
参数:
[texture, color, pos, width, height, angle, text, shadow, textSize, font, textAlign, drawSideArrows]: Array

texture: String

color: Color

pos: PositionAGL

width: Number

height: Number

angle: Number

text: String - (optional)

shadow: Number - (optional)

textSize: Number - (optional)

font: String - (optional)

textAlign: String - (optional) - left, center, right...

drawSideArrows: Boolean - (optional) - Draw arrows at edge of screen when icon moves off screen.
返回值:
Nothing

范例

范例1:
Icon and text:onEachFrame { drawIcon3D ["targetIcon.paa", [1,1,1,1], getPos cursorTarget, 1, 1, 45, "Target", 1, 0.05, "TahomaB"]; };

范例2:
Just text: addMissionEventHandler ["Draw3D", { drawIcon3D ["", [1,0,0,1], position cursorTarget, 0, 0, 0, "Target", 1, 0.05, "PuristaMedium"]; }];

额外资讯

多人游戏:
-
也可以看看:

drawLine3D

注意事项

此处撰写句法皆为可行用法. 可到官网[1]专页回报错误. 你可以使用讨论页面或是论坛来进行讨论.
新增注意事项 | 如何新增?

Notes

Posted on August 31, 2013
Killzone_Kid
As command syntax indicates, this command expects icon position in format PositionAGL meaning that over the land it expects PositionATL and over the sea PositionASLW. Use additional ASLToAGL if needed.

To draw smooth moving icon for a moving object use visiblePosition and visiblePositionASL accordingly.

Posted on September 23, 2013
Killzone_Kid
This command works well with addon textures, however getting it to display mission textures is a bit tricky. Follow this guide:


Posted on April 19, 2014
AgentRev
Just a little precision to KK's first comment, this command expects PositionASLW over the sea, not regular ASL. Luckily, modelToWorld returns ATL over land and ASLW over sea, so if you want the icon to stay the the same place, you should use this snippet to find the correct position:

_pos = visiblePositionASL _object; _pos set [2, (_object modelToWorld [0,0,0]) select 2];


Bottom Section

Posted on October 23, 2014 - 02:42 (UTC)
DreadedEntity
drawIcon3D and BIS_fnc_addStackedEventHandler work well together.

Using formatting commands with drawIcon3D will not work, instead, they will be added to the string.
["uniqueID", "onEachFrame", { drawIcon3D["myIcon.jpg", [1,1,1,0.5], getPos player, 1, 1, 0, format["%1\n%2", "Dreaded", "Entity"]]; }] call BIS_fnc_addStackedEventHandler; Shown text will be Dreaded\nEntity. (A3 1.32.127785)

The "text" parameter must be a string. You cannot use Structured_Text.
["uniqueID", "onEachFrame", { drawIcon3D [ "myIcon.jpg", [1,1,1,0.5], getPos player, 1, 1, 0, parseText format["<t size='1.25' font='PuristaLight' color='#ff0000'>%1%2</t>", Dreaded, Entity] ]; }] call BIS_fnc_addStackedEventHandler; (A3 1.32.127785)

Posted on November 13 (2014)
Iceman77
Here's a practical example combining both drawLine3D and drawIcon3D. Note: You may want to use visiblePosition instead of getPos for moving objects. DEADPILOTS = []; {

   if (getText (configfile >> "CfgVehicles" >> typeOf _x >> "textSingular") == "pilot") then {

DEADPILOTS pushBack _x;

   };

} forEach allDeadMen;

addMissionEventHandler ["Draw3D", {

   if (

{ player distance _x <= 15 } count DEADPILOTS > 0

      ) then {
       {

_corpsePos = getPos _x; if (player distance _corpsePos <= 15) then { _line1_start = _corpsePos; _line1_end = [(_line1_start select 0), (_line1_start select 1), 0.5]; _line2_start = [(_line1_end select 0), (_line1_end select 1) + 0.5, (_line1_end select 2)]; drawLine3D [_line1_start, _line1_end, [0,0,0,0.5]]; drawLine3D [_line1_end, _line2_start, [0,0,0,0.5]]; drawIcon3D ["\a3\ui_f\data\gui\cfg\hints\BasicLook_ca.paa", [0,0,0,0.5], _line2_start, 0.75, 0.75, 0]; }; } forEach DEADPILOTS;

   };

}];

Posted on April 11, 2015 - 07:36 (UTC)
Killzone Kid
Doesn't work when showHUD false, textAlign is broken, drawSideArrows will turn if angle is not 0 [2]

Posted on February 11, 2016 - 07:37 (UTC)
Ranwer
You can also use getPosWorld, which works splendid in script performance. Here is an example:
addMissionEventHandler ["Draw3D", {
_pos = getPosWorld player;
drawIcon3D ["a3\ui_f\data\gui\Rsc\RscDisplayArsenal\radio_ca.paa", [1,1,1,1], [(_pos select 0),(_pos select 1), 1], 0.8, 0.8, 0, (name player), 1, 0.0315, "EtelkaMonospacePro"];
}];

更多维基

随机维基