From 0bdf74cd39fd5b16a0f0f29902da9b5ba12f72ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Sun, 20 Jan 2019 10:32:01 +0100 Subject: [PATCH] Update Weblate template from Sphinx templates --- weblate/docs.pot | 1255 +++++++++++++++++++++++----------------------- 1 file changed, 625 insertions(+), 630 deletions(-) diff --git a/weblate/docs.pot b/weblate/docs.pot index 242ea5b09d..1ef84a9ed7 100644 --- a/weblate/docs.pot +++ b/weblate/docs.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot-docs-l10n\n" -"POT-Creation-Date: 2019-01-14 16:05+0100\n" +"POT-Creation-Date: 2019-01-20 10:29+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,18 +16,46 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../docs/index.rst:7 +#: ../../docs/index.rst:2 msgid "Godot Docs – *master* branch" msgstr "" -#: ../../docs/index.rst:9 +#: ../../docs/index.rst:6 msgid "" -"This is the documentation for the unstable (master) branch. Looking for the " -"documentation of the current **stable** branch? `Have a look here `_." +"Godot's documentation is available in various languages and versions. Expand " +"the \"Read the Docs\" panel at the bottom of the sidebar to see the list." msgstr "" -#: ../../docs/index.rst:13 +#: ../../docs/index.rst:10 +msgid "" +"This is the documentation for the development (master) branch. Looking for " +"the documentation of the current **stable** branch? `Have a look here " +"`_." +msgstr "" + +#: ../../docs/index.rst:16 +msgid "" +"This documentation is translated from the `original English one `_ by community members on `Weblate `_." +msgstr "" + +#: ../../docs/index.rst:20 +msgid "" +"Depending on the translation effort's completion level, you may find " +"paragraphs or whole pages which are still in English. You can help the " +"community by providing new translations or reviewing existing ones on " +"Weblate." +msgstr "" + +#: ../../docs/index.rst:25 +msgid "" +"For the time being, localized translations are only available for the " +"\"latest\" (development) branch, but should be suitable to learn how to use " +"stable Godot releases nevertheless." +msgstr "" + +#: ../../docs/index.rst:29 msgid "" "Welcome to the official documentation of Godot Engine, the free and open " "source community-driven 2D and 3D game engine! If you are new to this " @@ -36,14 +64,14 @@ msgid "" "offer." msgstr "" -#: ../../docs/index.rst:18 +#: ../../docs/index.rst:34 msgid "" "The table of contents below and in the sidebar should let you easily access " "the documentation for your topic of interest. You can also use the search " "function in the top left corner." msgstr "" -#: ../../docs/index.rst:22 +#: ../../docs/index.rst:38 msgid "" "Godot Engine is an open source project developed by a community of " "volunteers. The documentation team can always use your feedback and help to " @@ -52,7 +80,7 @@ msgid "" "the documentation better by letting us know!" msgstr "" -#: ../../docs/index.rst:29 +#: ../../docs/index.rst:45 msgid "" "Submit an issue or pull request on the `GitHub repository `_, help us `translate the documentation " @@ -62,32 +90,32 @@ msgid "" "net `_!" msgstr "" -#: ../../docs/index.rst:43 +#: ../../docs/index.rst:59 msgid "" "The main documentation for the site is organized into the following sections:" msgstr "" -#: ../../docs/index.rst:45 ../../docs/community/resources.rst:9 +#: ../../docs/index.rst:61 ../../docs/community/resources.rst:9 msgid "General" msgstr "" -#: ../../docs/index.rst:53 +#: ../../docs/index.rst:69 msgid "Getting started" msgstr "" -#: ../../docs/index.rst:64 ../../docs/community/tutorials.rst:4 +#: ../../docs/index.rst:80 ../../docs/community/tutorials.rst:4 msgid "Tutorials" msgstr "" -#: ../../docs/index.rst:90 +#: ../../docs/index.rst:106 msgid "Development" msgstr "" -#: ../../docs/index.rst:99 +#: ../../docs/index.rst:115 msgid "Creating Content" msgstr "" -#: ../../docs/index.rst:107 ../../docs/community/index.rst:2 +#: ../../docs/index.rst:123 ../../docs/community/index.rst:2 msgid "Community" msgstr "" @@ -981,6 +1009,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:54 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:113 msgid "|image7|" msgstr "" @@ -989,7 +1018,7 @@ msgid "When the folder path is correct, you'll see a green checkmark." msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:58 -#: ../../docs/tutorials/assetlib/using_assetlib.rst:120 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:121 msgid "|image8|" msgstr "" @@ -1005,7 +1034,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:68 -#: ../../docs/tutorials/assetlib/using_assetlib.rst:141 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:142 msgid "|image9|" msgstr "" @@ -1014,7 +1043,7 @@ msgid "Now you should see this interface, with empty docks on the right side." msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:72 -#: ../../docs/tutorials/assetlib/using_assetlib.rst:147 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:148 msgid "|image10|" msgstr "" @@ -1031,7 +1060,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:80 -#: ../../docs/tutorials/assetlib/using_assetlib.rst:152 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:153 msgid "|image11|" msgstr "" @@ -1042,7 +1071,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:85 -#: ../../docs/tutorials/assetlib/using_assetlib.rst:160 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:161 msgid "|image12|" msgstr "" @@ -1054,7 +1083,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:91 -#: ../../docs/tutorials/assetlib/using_assetlib.rst:167 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:168 msgid "|image13|" msgstr "" @@ -1066,6 +1095,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:97 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:115 msgid "|image14|" msgstr "" @@ -2776,7 +2806,7 @@ msgstr "" msgid "" "This game will use portrait mode, so we need to adjust the size of the game " "window. Click on Project -> Project Settings -> Display -> Window and set " -"\"Width\" to 480 and \"Height\" to 720." +"\"Width\" to ``480`` and \"Height\" to ``720``." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:43 @@ -2789,8 +2819,8 @@ msgid "" "``HUD``, which we will combine into the game's ``Main`` scene. In a larger " "project, it might be useful to make folders to hold the various scenes and " "their scripts, but for this relatively small game, you can save your scenes " -"and scripts in the root folder, referred to as ``res://``. You can see your " -"project folders in the FileSystem Dock in the upper left corner:" +"and scripts in the project's root folder, referred to as ``res://``. You " +"can see your project folders in the FileSystem Dock in the lower left corner:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:56 @@ -2822,7 +2852,7 @@ msgid "" "functionality." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:74 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:75 msgid "" "Before we add any children to the ``Player`` node, we want to make sure we " "don't accidentally move or resize them by clicking on them. Select the node " @@ -2830,23 +2860,23 @@ msgid "" "the object's children are not selectable.\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:81 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:82 msgid "" "Save the scene. Click Scene -> Save, or press ``Ctrl+S`` on Windows/Linux or " "``Command+S`` on Mac." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:83 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:84 msgid "For this project, we will be following the Godot naming conventions." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:85 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:86 msgid "" "**GDScript**: Classes (nodes) use PascalCase, variables and functions use " "snake_case, and constants use ALL_CAPS (See :ref:`doc_gdscript_styleguide`)." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:89 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:90 msgid "" "**C#**: Classes, export variables and methods use PascalCase, private fields " "use _camelCase, local variables and parameters use camelCase (See :ref:" @@ -2854,11 +2884,11 @@ msgid "" "when connecting signals." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:96 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:97 msgid "Sprite animation" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:98 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:99 msgid "" "Click on the ``Player`` node and add an :ref:`AnimatedSprite " "` node as a child. The ``AnimatedSprite`` will handle " @@ -2867,10 +2897,11 @@ msgid "" "` resource, which is a list of the animations it can " "display. To create one, find the ``Frames`` property in the Inspector and " "click \"\" -> \"New SpriteFrames\". Next, in the same location, click " -"```` to open the \"SpriteFrames\" panel:" +"````, then click \"Open Editor\" to open the \"SpriteFrames\" " +"panel:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:110 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:111 msgid "" "On the left is a list of animations. Click the \"default\" one and rename it " "to \"right\". Then click the \"Add\" button to create a second animation " @@ -2879,7 +2910,7 @@ msgid "" "Frames\" side of the panel:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:117 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:118 msgid "" "The player images are a bit too large for the game window, so we need to " "scale them down. Click on the ``AnimatedSprite`` node and set the ``Scale`` " @@ -2887,67 +2918,64 @@ msgid "" "``Node2D`` heading." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:124 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:125 msgid "" "Finally, add a :ref:`CollisionShape2D ` as a child " "of ``Player``. This will determine the player's \"hitbox\", or the bounds of " "its collision area. For this character, a ``CapsuleShape2D`` node gives the " "best fit, so next to \"Shape\" in the Inspector, click \"\"\" -> \"New " -"CapsuleShape2D\". Resize the shape to cover the sprite:" +"CapsuleShape2D\". Using the two size handles, resize the shape to cover the " +"sprite:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:132 -msgid "" -"Don't scale the shape's outline! Only use the size handles (circled in red) " -"to adjust the shape!" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:135 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:134 msgid "When you're finished, your ``Player`` scene should look like this:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:140 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:139 msgid "Moving the player" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:142 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:141 msgid "" "Now we need to add some functionality that we can't get from a built-in " "node, so we'll add a script. Click the ``Player`` node and click the \"Add " "Script\" button:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:148 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:147 msgid "" "In the script settings window, you can leave the default settings alone. " "Just click \"Create\":" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:151 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:150 msgid "" "If you're creating a C# script or other languages, select the language from " "the `language` drop down menu before hitting create." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:156 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:155 msgid "" "If this is your first time encountering GDScript, please read :ref:" "`doc_scripting` before continuing." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:159 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:158 msgid "Start by declaring the member variables this object will need:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:180 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:179 msgid "" "Using the ``export`` keyword on the first variable ``speed`` allows us to " "set its value in the Inspector. This can be handy for values that you want " "to be able to adjust just like a node's built-in properties. Click on the " -"``Player`` node and set the speed property to ``400``." +"``Player`` node and you'll see the property now appears in the \"Script " +"Variables\" section of the Inspector. Remember, if you change the value " +"here, it will override the value written in the script." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:185 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:186 msgid "" "If you're using C#, you need to (re)build the project assemblies whenever " "you want to see new export variables or signals. This build can be manually " @@ -2955,102 +2983,104 @@ msgid "" "to reveal the Mono Panel, then clicking the \"Build Project\" button." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:193 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:194 msgid "" "The ``_ready()`` function is called when a node enters the scene tree, which " "is a good time to find the size of the game window:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:209 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:210 msgid "" "Now we can use the ``_process()`` function to define what the player will " "do. ``_process()`` is called every frame, so we'll use it to update elements " -"of our game, which we expect will change often. Here we'll make it:" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:213 -msgid "Check for input." -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:214 -msgid "Move in the given direction." +"of our game, which we expect will change often. For the player, we need to " +"do the following:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:215 -msgid "Play the appropriate animation." +msgid "Check for input." +msgstr "" + +#: ../../docs/getting_started/step_by_step/your_first_game.rst:216 +msgid "Move in the given direction." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:217 +msgid "Play the appropriate animation." +msgstr "" + +#: ../../docs/getting_started/step_by_step/your_first_game.rst:219 msgid "" "First, we need to check for input - is the player pressing a key? For this " "game, we have 4 direction inputs to check. Input actions are defined in the " -"Project Settings under \"Input Map\". You can define custom events and " +"Project Settings under \"Input Map\". Here, you can define custom events and " "assign different keys, mouse events, or other inputs to them. For this demo, " "we will use the default events that are assigned to the arrow keys on the " "keyboard." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:224 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:226 msgid "" "You can detect whether a key is pressed using ``Input.is_action_pressed()``, " "which returns ``true`` if it is pressed or ``false`` if it isn't." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:286 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:288 msgid "" -"We check each input and add/subtract from the ``velocity`` to obtain a total " -"direction. For example, if you hold ``right`` and ``down`` at the same time, " -"the resulting ``velocity`` vector will be ``(1, 1)``. In this case, since " -"we're adding a horizontal and a vertical movement, the player would move " -"*faster* than if it just moved horizontally." +"We start by setting the ``velocity`` to ``(0, 0)`` - by default the player " +"should not be moving. Then we check each input and add/subtract from the " +"``velocity`` to obtain a total direction. For example, if you hold ``right`` " +"and ``down`` at the same time, the resulting ``velocity`` vector will be " +"``(1, 1)``. In this case, since we're adding a horizontal and a vertical " +"movement, the player would move *faster* than if it just moved horizontally." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:292 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:295 msgid "" "We can prevent that if we *normalize* the velocity, which means we set its " "*length* to ``1``, and multiply by the desired speed. This means no more " "fast diagonal movement." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:296 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:299 msgid "" "If you've never used vector math before, or need a refresher, you can see an " "explanation of vector usage in Godot at :ref:`doc_vector_math`. It's good to " "know but won't be necessary for the rest of this tutorial." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:300 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:303 msgid "" "We also check whether the player is moving so we can start or stop the " "AnimatedSprite animation." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:303 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:306 msgid "" -"``$`` returns the node at the relative path from this node, or returns " -"``null`` if the node is not found. Since AnimatedSprite is a child of the " -"current node, we can use ``$AnimatedSprite``." +"In GDScript, ``$`` returns the node at the relative path from the current " +"node, or returns ``null`` if the node is not found. Since AnimatedSprite is " +"a child of the current node, we can use ``$AnimatedSprite``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:306 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:309 msgid "" "``$`` is shorthand for ``get_node()``. So in the code above, ``" "$AnimatedSprite.play()`` is the same as ``get_node(\"AnimatedSprite\")." "play()``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:309 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:312 msgid "" -"Now that we have a movement direction, we can update ``Player``'s position " +"Now that we have a movement direction, we can update the player's position " "and use ``clamp()`` to prevent it from leaving the screen by adding the " "following to the bottom of the ``_process`` function:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:329 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:332 msgid "*Clamping* a value means restricting it to a given range." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:331 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:334 msgid "" "Click \"Play Scene\" (``F6``) and confirm you can move the player around the " "screen in all directions. The console output that opens upon playing the " @@ -3058,7 +3088,7 @@ msgid "" "blue) in the lower left of the Bottom Panel." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:335 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:339 msgid "" "If you get an error in the \"Debugger\" panel that refers to a \"null " "instance\", this likely means you spelled the node name wrong. Node names " @@ -3066,11 +3096,11 @@ msgid "" "match the name you see in the scene tree." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:340 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:344 msgid "Choosing animations" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:342 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:346 msgid "" "Now that the player can move, we need to change which animation the " "AnimatedSprite is playing based on direction. We have a \"right\" animation, " @@ -3080,36 +3110,36 @@ msgid "" "``_process()`` function:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:376 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:380 msgid "" "The boolean assignments in the code above are a common shorthand for " "programmers. Consider this code versus the shortened boolean assignment " "above:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:395 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:399 msgid "" "Play the scene again and check that the animations are correct in each of " "the directions. When you're sure the movement is working correctly, add this " "line to ``_ready()``, so the player will be hidden when the game starts:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:410 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:414 msgid "Preparing for collisions" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:412 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:416 msgid "" "We want ``Player`` to detect when it's hit by an enemy, but we haven't made " "any enemies yet! That's OK, because we're going to use Godot's *signal* " "functionality to make it work." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:416 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:420 msgid "Add the following at the top of the script, after ``extends Area2d``:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:430 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:434 msgid "" "This defines a custom signal called \"hit\" that we will have our player " "emit (send out) when it collides with an enemy. We will use ``Area2D`` to " @@ -3117,46 +3147,53 @@ msgid "" "next to the Inspector tab to see the list of signals the player can emit:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:437 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:441 msgid "" "Notice our custom \"hit\" signal is there as well! Since our enemies are " "going to be ``RigidBody2D`` nodes, we want the ``body_entered( Object " "body )`` signal; this will be emitted when a body contacts the player. Click " "\"Connect..\" and then \"Connect\" again on the \"Connecting Signal\" " "window. We don't need to change any of these settings - Godot will " -"automatically create a function called ``_on_Player_body_entered`` in your " -"player's script." +"automatically create a function in your player's script. This function will " +"be called whenever the signal is emitted - it *handles* the signal." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:445 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:450 msgid "" "When connecting a signal, instead of having Godot create a function for you, " "you can also give the name of an existing function that you want to link the " "signal to." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:449 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:454 msgid "Add this code to the function:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:468 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:473 msgid "" -"Disabling the area's collision shape means it won't detect collisions. By " -"turning it off, we make sure we don't trigger the ``hit`` signal more than " -"once." +"Each time an enemy hits the player, the signal is going to be emitted. We " +"need to disable the player's collision so that we don't trigger the ``hit`` " +"signal more than once." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:472 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:477 +msgid "" +"Disabling the area's collision shape can cause an error if it happens in the " +"middle of the engine's collision processing. Using ``call_deferred()`` " +"allows us to have Godot wait to disable the shape until it's safe to do so." +msgstr "" + +#: ../../docs/getting_started/step_by_step/your_first_game.rst:482 msgid "" "The last piece for our player is to add a function we can call to reset the " "player when starting a new game." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:493 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:503 msgid "Enemy scene" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:495 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:505 msgid "" "Now it's time to make the enemies our player will have to dodge. Their " "behavior will not be very complex: mobs will spawn randomly at the edges of " @@ -3164,49 +3201,49 @@ msgid "" "when they go offscreen." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:500 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:510 msgid "" "We will build this into a ``Mob`` scene, which we can then *instance* to " "create any number of independent mobs in the game." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:504 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:514 msgid "Node setup" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:506 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:516 msgid "Click Scene -> New Scene and we'll create the Mob." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:508 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:518 msgid "The Mob scene will use the following nodes:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:510 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:520 msgid ":ref:`RigidBody2D ` (named ``Mob``)" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:512 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:522 msgid ":ref:`AnimatedSprite `" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:513 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:523 msgid ":ref:`CollisionShape2D `" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:514 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:524 msgid "" ":ref:`VisibilityNotifier2D ` (named " "``Visibility``)" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:516 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:526 msgid "" "Don't forget to set the children so they can't be selected, like you did " "with the Player scene." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:519 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:529 msgid "" "In the :ref:`RigidBody2D ` properties, set ``Gravity " "Scale`` to ``0``, so the mob will not fall downward. In addition, under the " @@ -3214,7 +3251,7 @@ msgid "" "box. This will ensure the mobs do not collide with each other." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:526 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:536 msgid "" "Set up the :ref:`AnimatedSprite ` like you did for the " "player. This time, we have 3 animations: ``fly``, ``swim``, and ``walk``. " @@ -3223,48 +3260,49 @@ msgid "" "randomly so that the mobs will have some variety." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:533 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:543 msgid "" "``fly`` should be set to 3 FPS, with ``swim`` and ``walk`` set to 4 FPS." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:535 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:545 msgid "" "Like the player images, these mob images need to be scaled down. Set the " "``AnimatedSprite``'s ``Scale`` property to ``(0.75, 0.75)``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:538 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:548 msgid "" "As in the ``Player`` scene, add a ``CapsuleShape2D`` for the collision. To " "align the shape with the image, you'll need to set the ``Rotation Degrees`` " "property to ``90`` under ``Node2D``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:543 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:553 msgid "Enemy script" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:545 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:555 msgid "Add a script to the ``Mob`` and add the following member variables:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:571 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:581 msgid "" -"We'll pick a random value between ``min_speed`` and ``max_speed`` for how " -"fast each mob will move (it would be boring if they were all moving at the " -"same speed). Set them to ``150`` and ``250`` in the Inspector. We also have " -"an array containing the names of the three animations, which we'll use to " -"select a random one." +"When we spawn a mob, we'll pick a random value between ``min_speed`` and " +"``max_speed`` for how fast each mob will move (it would be boring if they " +"were all moving at the same speed). We also have an array containing the " +"names of the three animations, which we'll use to select a random one. Make " +"sure you've spelled these the same in the script and in the SpriteFrames " +"resource." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:577 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:587 msgid "" "Now let's look at the rest of the script. In ``_ready()`` we randomly choose " "one of the three animation types:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:596 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:606 msgid "" "You must use ``randomize()`` if you want your sequence of \"random\" numbers " "to be different every time you run the scene. We're going to use " @@ -3272,90 +3310,90 @@ msgid "" "n`` is the standard way to get a random integer between ``0`` and ``n-1``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:602 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:612 msgid "" "The last piece is to make the mobs delete themselves when they leave the " "screen. Connect the ``screen_exited()`` signal of the ``Visibility`` node " "and add this code:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:619 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:629 msgid "This completes the `Mob` scene." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:622 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:632 msgid "Main scene" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:624 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:634 msgid "" "Now it's time to bring it all together. Create a new scene and add a :ref:" "`Node ` named ``Main``. Click the \"Instance\" button and select " "your saved ``Player.tscn``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:630 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:640 msgid "See :ref:`doc_instancing` to learn more about instancing." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:632 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:642 msgid "" "Now, add the following nodes as children of ``Main``, and name them as shown " "(values are in seconds):" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:635 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:645 msgid "" ":ref:`Timer ` (named ``MobTimer``) - to control how often mobs " "spawn" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:636 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:646 msgid "" ":ref:`Timer ` (named ``ScoreTimer``) - to increment the score " "every second" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:637 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:647 msgid "" ":ref:`Timer ` (named ``StartTimer``) - to give a delay before " "starting" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:638 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:648 msgid "" ":ref:`Position2D ` (named ``StartPosition``) - to indicate " "the player's start position" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:640 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:650 msgid "" "Set the ``Wait Time`` property of each of the ``Timer`` nodes as follows:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:643 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:653 msgid "``MobTimer``: ``0.5``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:644 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:654 msgid "``ScoreTimer``: ``1``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:645 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:655 msgid "``StartTimer``: ``2``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:647 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:657 msgid "" "In addition, set the ``One Shot`` property of ``StartTimer`` to \"On\" and " "set ``Position`` of the ``StartPosition`` node to ``(240, 450)``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:651 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:661 msgid "Spawning mobs" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:653 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:663 msgid "" "The Main node will be spawning new mobs, and we want them to appear at a " "random location on the edge of the screen. Add a :ref:`Path2D " @@ -3363,7 +3401,7 @@ msgid "" "select ``Path2D``, you will see some new buttons at the top of the editor:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:660 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:670 msgid "" "Select the middle one (\"Add Point\") and draw the path by clicking to add " "the points at the corners shown. To have the points snap to the grid, make " @@ -3372,19 +3410,19 @@ msgid "" "a series of three vertical dots." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:668 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:678 msgid "" "Draw the path in *clockwise* order, or your mobs will spawn pointing " "*outwards* instead of *inwards*!" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:671 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:681 msgid "" "After placing point ``4`` in the image, click the \"Close Curve\" button and " "your curve will be complete." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:674 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:684 msgid "" "Now that the path is defined, add a :ref:`PathFollow2D ` " "node as a child of ``MobPath`` and name it ``MobSpawnLocation``. This node " @@ -3392,23 +3430,23 @@ msgid "" "to select a random position and direction along the path." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:680 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:690 msgid "Main script" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:682 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:692 msgid "" "Add a script to ``Main``. At the top of the script, we use ``export " "(PackedScene)`` to allow us to choose the Mob scene we want to instance." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:722 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:732 msgid "" "Drag ``Mob.tscn`` from the \"FileSystem\" panel and drop it in the ``Mob`` " "property under the Script Variables of the ``Main`` node." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:725 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:735 msgid "" "Next, click on the Player and connect the ``hit`` signal. We want to make a " "new function named ``game_over``, which will handle what needs to happen " @@ -3417,14 +3455,15 @@ msgid "" "as a ``new_game`` function to set everything up for a new game:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:762 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:772 msgid "" "Now connect the ``timeout()`` signal of each of the Timer nodes " -"(``StartTimer``, ``ScoreTimer`` ,and ``MobTimer``). ``StartTimer`` will " -"start the other two timers. ``ScoreTimer`` will increment the score by 1." +"(``StartTimer``, ``ScoreTimer`` ,and ``MobTimer``) to the main script. " +"``StartTimer`` will start the other two timers. ``ScoreTimer`` will " +"increment the score by 1." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:789 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:799 msgid "" "In ``_on_MobTimer_timeout()``, we will create a mob instance, pick a random " "starting location along the ``Path2D``, and set the mob in motion. The " @@ -3432,34 +3471,34 @@ msgid "" "we will use that to select the mob's direction as well as its position." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:795 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:805 msgid "" "Note that a new instance must be added to the scene using ``add_child()``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:798 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:808 msgid "" "Now click on ``MobTimer`` in the scene window then head to inspector window, " "switch to node view then click on ``timeout()`` and connect the signal." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:801 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:811 #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:1091 msgid "Add the following code:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:848 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:859 msgid "" "In functions requiring angles, GDScript uses *radians*, not degrees. If " "you're more comfortable working with degrees, you'll need to use the " "``deg2rad()`` and ``rad2deg()`` functions to convert between the two." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:854 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:865 msgid "HUD" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:856 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:867 msgid "" "The final piece our game needs is a UI: an interface to display things like " "score, a \"game over\" message, and a restart button. Create a new scene, " @@ -3468,57 +3507,77 @@ msgid "" "overlay on top of the game view." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:862 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:873 msgid "" "The :ref:`CanvasLayer ` node lets us draw our UI elements " "on a layer above the rest of the game, so that the information it displays " "isn't covered up by any game elements like the player or mobs." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:866 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:877 msgid "The HUD displays the following information:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:868 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:879 msgid "Score, changed by ``ScoreTimer``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:869 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:880 msgid "A message, such as \"Game Over\" or \"Get Ready!\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:870 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:881 msgid "A \"Start\" button to begin the game." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:872 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:883 msgid "" "The basic node for UI elements is :ref:`Control `. To create " "our UI, we'll use two types of :ref:`Control ` nodes: :ref:" "`Label ` and :ref:`Button `." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:876 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:887 msgid "Create the following as children of the ``HUD`` node:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:878 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:889 msgid ":ref:`Label ` named ``ScoreLabel``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:879 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:890 msgid ":ref:`Label ` named ``MessageLabel``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:880 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:891 msgid ":ref:`Button ` named ``StartButton``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:881 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:892 msgid ":ref:`Timer ` named ``MessageTimer``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:883 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:894 +msgid "" +"Click on the ``ScoreLabel`` and type a number into the _Text_ field in the " +"Inspector. The default font for ``Control`` nodes is small and doesn't scale " +"well. There is a font file included in the game assets called \"Xolonium-" +"Regular.ttf\". To use this font, do the following for each of the three " +"``Control`` nodes:" +msgstr "" + +#: ../../docs/getting_started/step_by_step/your_first_game.rst:900 +msgid "Under \"Custom Fonts\", choose \"New DynamicFont\"" +msgstr "" + +#: ../../docs/getting_started/step_by_step/your_first_game.rst:904 +msgid "" +"Click on the \"DynamicFont\" you added, and under \"Font/Font Data\", choose " +"\"Load\" and select the \"Xolonium-Regular.ttf\" file. You must also set the " +"font's ``Size``. A setting of ``64`` works well." +msgstr "" + +#: ../../docs/getting_started/step_by_step/your_first_game.rst:910 msgid "" "**Anchors and Margins:** ``Control`` nodes have a position and size, but " "they also have anchors and margins. Anchors define the origin - the " @@ -3528,150 +3587,101 @@ msgid "" "`doc_design_interfaces_with_the_control_nodes` for more details." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:890 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:917 msgid "" "Arrange the nodes as shown below. Click the \"Anchor\" button to set a " "Control node's anchor:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:895 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:922 msgid "" "You can drag the nodes to place them manually, or for more precise " "placement, use the following settings:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:899 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:926 msgid "ScoreLabel" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:901 -msgid "``Layout``: \"Center Top\"" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:902 -#: ../../docs/getting_started/step_by_step/your_first_game.rst:915 #: ../../docs/getting_started/step_by_step/your_first_game.rst:928 -msgid "``Margin``:" +msgid "*Text* : ``0``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:904 -msgid "Left: ``-25``" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:905 -msgid "Top: ``0``" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:906 -msgid "Right: ``25``" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:907 -msgid "Bottom: ``100``" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:909 -msgid "Text: ``0``" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:912 -msgid "MessageLabel" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:914 -msgid "``Layout``: \"Center\"" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:917 -msgid "Left: ``-200``" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:918 -msgid "Top: ``-150``" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:919 -msgid "Right: ``200``" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:920 -msgid "Bottom: ``0``" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:922 -msgid "Text: ``Dodge the Creeps!``" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:925 -msgid "StartButton" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:927 -msgid "``Layout``: \"Center Bottom\"" +#: ../../docs/getting_started/step_by_step/your_first_game.rst:929 +msgid "*Layout* : \"Top Wide\"" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:930 -msgid "Left: ``-100``" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:931 -msgid "Top: ``-200``" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:932 -msgid "Right: ``100``" +#: ../../docs/getting_started/step_by_step/your_first_game.rst:937 +msgid "*Align* : \"Center\"" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:933 -msgid "Bottom: ``-100``" +msgid "MessageLabel" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:935 -msgid "Text: ``Start``" +msgid "*Text* : ``Dodge the Creeps!``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:937 -msgid "" -"To make the text of the ``MessageLabel`` fit the game's window click the " -"small icon next to your text property. This will open up a new window where " -"you can add a new line between the words. The default font for ``Control`` " -"nodes is small and doesn't scale well. There is a font file included in the " -"game assets called \"Xolonium-Regular.ttf\". To use this font, do the " -"following for each of the three ``Control`` nodes:" +#: ../../docs/getting_started/step_by_step/your_first_game.rst:936 +msgid "*Layout* : \"HCenter Wide\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:945 -msgid "Under \"Custom Fonts\", choose \"New DynamicFont\"" +#: ../../docs/getting_started/step_by_step/your_first_game.rst:940 +msgid "StartButton" +msgstr "" + +#: ../../docs/getting_started/step_by_step/your_first_game.rst:942 +msgid "*Text* : ``Start``" +msgstr "" + +#: ../../docs/getting_started/step_by_step/your_first_game.rst:943 +msgid "*Layout* : \"Center Bottom\"" +msgstr "" + +#: ../../docs/getting_started/step_by_step/your_first_game.rst:944 +msgid "*Margin* :" +msgstr "" + +#: ../../docs/getting_started/step_by_step/your_first_game.rst:946 +msgid "Top: ``-200``" +msgstr "" + +#: ../../docs/getting_started/step_by_step/your_first_game.rst:947 +msgid "Bottom: ``-100``" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:949 -msgid "" -"Click on the \"DynamicFont\" you added, and under \"Font Data\", choose " -"\"Load\" and select the \"Xolonium-Regular.ttf\" file. You must also set the " -"font's ``Size``. A setting of ``64`` works well." -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:955 msgid "Now add this script to ``HUD``:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:974 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:968 msgid "" "The ``start_game`` signal tells the ``Main`` node that the button has been " "pressed." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:996 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:990 msgid "" "This function is called when we want to display a message temporarily, such " "as \"Get Ready\". On the ``MessageTimer``, set the ``Wait Time`` to ``2`` " "and set the ``One Shot`` property to \"On\"." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1026 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1021 msgid "" "This function is called when the player loses. It will show \"Game Over\" " -"for 2 seconds, then return to the title screen and show the \"Start\" button." +"for 2 seconds, then return to the title screen and, after a brief pause, " +"show the \"Start\" button." +msgstr "" + +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1025 +msgid "" +"When you need to pause for a brief time, an alternative to using a Timer " +"node is to use the SceneTree's ``create_timer()`` function. This can be very " +"useful to delay, such as in the above code, where we want to wait a little " +"bit of time before showing the \"Start\" button." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1043 @@ -3758,8 +3768,8 @@ msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1145 msgid "" -"You can also add a background image, if you have one, by using a ``Sprite`` " -"node." +"You could also add a background image, if you have one, by using a " +"``Sprite`` node." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1149 @@ -3793,69 +3803,45 @@ msgid "Finally, add ``$DeathSound.play()`` in the ``game_over()`` function." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1167 -msgid "Particles" +msgid "Keyboard Shortcut" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1169 msgid "" -"For one last bit of visual appeal, let's add a trail effect to the player's " -"movement. Choose your ``Player`` scene and add a :ref:`Particles2D " -"` node named ``Trail``." +"Since the game is played with keyboard controls, it would be convenient if " +"we could also start the game by pressing a key on the keyboard. One way to " +"do this is using the \"Shortcut\" property of the ``Button`` node." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1173 msgid "" -"There are a large number of properties to choose from when configuring " -"particles. Feel free to experiment and create different effects. For the " -"effect in this example, use the following settings:" +"In the ``HUD`` scene, select the ``StartButton`` and find its _Shortcut_ " +"property in the Inspector. Select \"New Shortcut\" and click on the " +"\"Shortcut\" item. A second _Shortcut_ property will appear. Select \"New " +"InputEventAction\" and click the new \"InputEvent\". Finally, in the " +"_Action_ property, type the name \"ui_select\". This is the default input " +"event associated with the spacebar." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1179 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1181 msgid "" -"You also need to create a ``Material`` by clicking on ```` and then " -"\"New ParticlesMaterial\". The settings for that are below:" +"Now when the start button appears, you can either click it or press the " +"spacebar to start the game." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1184 -msgid "" -"To make the gradient for the \"Color Ramp\" setting, we want a gradient " -"taking the alpha (transparency) of the sprite from 0.5 (semi-transparent) to " -"0.0 (fully transparent)." -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1188 -msgid "" -"Click \"New GradientTexture\", then under \"Gradient\", click \"New Gradient" -"\". You'll see a window like this:" -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1193 -msgid "" -"The left and right boxes represent the start and end colors. Click on each " -"and then click the large square on the right to choose the color. For the " -"first color, set the ``A`` (alpha) value to around halfway. For the second, " -"set it all the way to ``0``." -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1198 -msgid "" -"See :ref:`Particles2D ` for more details on using " -"particle effects." -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1202 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1185 msgid "Project files" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1205 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1188 msgid "You can find a completed version of this project at these locations:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1205 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1188 msgid "https://github.com/kidscancode/Godot3_dodge/releases" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1206 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1189 msgid "https://github.com/godotengine/godot-demo-projects" msgstr "" @@ -9058,7 +9044,7 @@ msgid "Exec Flags" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:34 -msgid "geany/kate" +msgid "Geany/Kate" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:34 @@ -9066,7 +9052,7 @@ msgid "{file} --line {line} --column {col}" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:36 -msgid "atom/sublime text" +msgid "Atom/Sublime Text" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:36 @@ -9074,13 +9060,22 @@ msgid "{file}:{line}" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:38 -msgid "jetbrains rider" +msgid "JetBrains Rider" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:38 msgid "--line {line} {file}" msgstr "" +#: ../../docs/getting_started/editor/external_editor.rst:40 +#: ../../docs/development/cpp/configuring_an_ide.rst:267 +msgid "Visual Studio Code" +msgstr "" + +#: ../../docs/getting_started/editor/external_editor.rst:40 +msgid "{project} --goto {file}:{line}:{col}" +msgstr "" + #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:4 msgid "GDScript basics" msgstr "" @@ -48270,12 +48265,12 @@ msgstr "" msgid "" "Godot always supported standard low-level networking via UDP, TCP and some " "higher level protocols such as SSL and HTTP. These protocols are flexible " -"and can be used for almost anything. However using them to synchronize game " +"and can be used for almost anything. However, using them to synchronize game " "state manually can be a large amount of work. Sometimes that work can't be " "avoided or is worth it, for example when working with a custom server " -"implementation on the backend. But in most cases it's worthwhile to consider " -"Godot's high-level networking API, which sacrifices some of the fine-grained " -"control of low-level networking for greater ease of use." +"implementation on the backend. But in most cases, it's worthwhile to " +"consider Godot's high-level networking API, which sacrifices some of the " +"fine-grained control of low-level networking for greater ease of use." msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:14 @@ -48296,7 +48291,7 @@ msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:18 msgid "" -"UDP is a simpler protocol which only sends packets (and has no concept of a " +"UDP is a simpler protocol, which only sends packets (and has no concept of a " "\"connection\"). No error correction makes it pretty quick (low latency), " "but packets may be lost along the way or received in the wrong order. Added " "to that, the MTU (maximum packet size) for UDP is generally low (only a few " @@ -48308,16 +48303,16 @@ msgstr "" msgid "" "In general, TCP can be thought of as reliable, ordered, and slow; UDP as " "unreliable, unordered and fast. Because of the large difference in " -"performance it often makes sense to re-build the parts of TCP wanted for " -"games (optional reliability and packet order) while avoiding the unwanted " +"performance, it often makes sense to re-build the parts of TCP wanted for " +"games (optional reliability and packet order), while avoiding the unwanted " "parts (congestion/traffic control features, Nagle's algorithm, etc). Due to " -"this most game engines come with such an implementation, and Godot is no " +"this, most game engines come with such an implementation, and Godot is no " "exception." msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:26 msgid "" -"In summary you can use the low-level networking API for maximum control and " +"In summary, you can use the low-level networking API for maximum control and " "implement everything on top of bare network protocols or use the high-level " "API based on :ref:`SceneTree ` that does most of the heavy " "lifting behind the scenes in a generally optimized way." @@ -48400,7 +48395,7 @@ msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:66 msgid "" "This class interface can abstract most types of network layers, topologies " -"and libraries. By default Godot provides an implementation based on ENet (:" +"and libraries. By default, Godot provides an implementation based on ENet (:" "ref:`NetworkedMultiplayerEnet `), but this " "could be used to implement mobile APIs (for adhoc WiFi, Bluetooth) or custom " "device/console-specific networking APIs." @@ -48431,7 +48426,7 @@ msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:79 msgid "" -"To create that object it first has to be initialized as a server or client." +"To create that object, it first has to be initialized as a server or client." msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:81 @@ -48501,7 +48496,7 @@ msgid "" "retrieve the ID for the local system via :ref:`SceneTree." "get_network_unique_id() `. " "These IDs will be useful mostly for lobby management and should generally be " -"stored as they identify connected peers and thus players. You can also use " +"stored, as they identify connected peers and thus players. You can also use " "IDs to send messages only to certain peers." msgstr "" @@ -48524,10 +48519,10 @@ msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:141 msgid "" "Again, all these functions are mainly useful for lobby management or for " -"adding/removing players on the fly. For these tasks the server clearly has " -"to work as a server and you have do tasks manually such as sending a newly " -"connected player information about other already connected players (e.g. " -"their names, stats, etc)." +"adding/removing players on the fly. For these tasks, the server clearly has " +"to work as a server and you have to perform tasks manually such as sending a " +"newly connected player information about other already connected players (e." +"g. their names, stats, etc)." msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:145 @@ -48598,7 +48593,7 @@ msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:169 msgid "" "Unreliable: if the function call does not arrive, it will not be re-" -"transmitted, but if it arrives it will do it quickly." +"transmitted; but if it arrives, it will do it quickly." msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:171 @@ -48612,8 +48607,8 @@ msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:174 msgid "" -"There is also the `get_rpc_sender_id` function in `SceneTree` which can be " -"used to check which peer (or peer ID) sent a RPC call." +"There is also the `get_rpc_sender_id` function in `SceneTree`, which can be " +"used to check which peer (or peer ID) sent an RPC." msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:177 @@ -48628,14 +48623,14 @@ msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:230 msgid "" -"You might have noticed already something different, which is the usage of " +"You might have already noticed something different, which is the usage of " "the `remote` keyword on the `register_player` function:" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:236 msgid "" "This keyword has two main uses. The first is to let Godot know that this " -"function can be called from RPC. If no keywords are added Godot will block " +"function can be called from RPC. If no keywords are added, Godot will block " "any attempts to call functions for security. This makes security work a lot " "easier (so a client can't call a function to delete a file on another " "client's system)." @@ -48685,10 +48680,10 @@ msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:254 msgid "" "With this, lobby management should be more or less explained. Once you have " -"your game going you will most likely want to add some extra security to make " -"sure clients don't do anything funny (just validate the info they send from " -"time to time, or before game start). For the sake of simplicity and because " -"each game will share different information, this is not shown here." +"your game going, you will most likely want to add some extra security to " +"make sure clients don't do anything funny (just validate the info they send " +"from time to time, or before game start). For the sake of simplicity and " +"because each game will share different information, this is not shown here." msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:259 @@ -48716,8 +48711,8 @@ msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:270 msgid "" -"So, how to name such nodes? In Godot nodes need to have an unique name. It " -"must also be relatively easy for a player to tell which nodes represent each " +"So, how to name such nodes? In Godot, nodes need to have a unique name. It " +"must also be relatively easy for a player to tell which node represents each " "player ID." msgstr "" @@ -48730,8 +48725,8 @@ msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:301 msgid "" -"Depending on when you execute pre_configure_game() you may need to change " -"any calls to ``add_child()`` to be deferred via ``call_deferred()`` as the " +"Depending on when you execute pre_configure_game(), you may need to change " +"any calls to ``add_child()`` to be deferred via ``call_deferred()``, as the " "SceneTree is locked while the scene is being created (e.g. when ``_ready()`` " "is being called)." msgstr "" @@ -48742,8 +48737,8 @@ msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:307 msgid "" -"Setting up players might take different amount of time on every peer due to " -"lag, different hardware, or other reasons. To make sure the game will " +"Setting up players might take different amounts of time for every peer due " +"to lag, different hardware, or other reasons. To make sure the game will " "actually start when everyone is ready, pausing the game until all players " "are ready can be useful:" msgstr "" @@ -48760,9 +48755,9 @@ msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:339 msgid "" -"In most games the goal of multiplayer networking is that the game runs " +"In most games, the goal of multiplayer networking is that the game runs " "synchronized on all the peers playing it. Besides supplying an RPC and " -"remote member variable set implementation, Godot adds the concept network " +"remote member variable set implementation, Godot adds the concept of network " "masters." msgstr "" @@ -48778,9 +48773,9 @@ msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:347 msgid "" -"When not explicitly set the network master is inherited from the parent " -"node, which if not changed is always going to be the server (ID 1). Thus the " -"server has authority over all nodes by default." +"When not explicitly set, the network master is inherited from the parent " +"node, which if not changed, is always going to be the server (ID 1). Thus " +"the server has authority over all nodes by default." msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:349 @@ -48855,7 +48850,7 @@ msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:417 msgid "" -"This instance, then, calls the `stun` function in the same instances of that " +"This instance, then, calls the `stun` method in the same instances of that " "same player (but in different peers), and only those which are set as " "puppet, making the player look stunned in all the peers (as well as the " "current, master one)." @@ -48865,7 +48860,7 @@ msgstr "" msgid "" "Note that you could also send the stun() message only to a specific player " "by using rpc_id(, \"exploded\", bomb_owner). This may not make much " -"sense for an area-of-effect case like the bomb but in other cases, like " +"sense for an area-of-effect case like the bomb, but in other cases, like " "single target damage." msgstr "" @@ -48893,7 +48888,7 @@ msgstr "" #: ../../docs/tutorials/networking/http_request_class.rst:14 msgid "" -"Create a new empty scene, add a CanvasLayer as the root node and add an " +"Create a new empty scene, add a CanvasLayer as the root node and add a " "script to it. Then add two child nodes to it: a Button and an HTTPRequest " "node. You will need to connect the following signals to the CanvasLayer " "script:" @@ -48945,8 +48940,8 @@ msgstr "" #: ../../docs/tutorials/networking/http_request_class.rst:53 msgid "" -"Please note that for SSL/TLS encryption and thus HTTPS URLs to work you may " -"need to take some steps as described :ref:`here `." +"Please note that, for SSL/TLS encryption and thus HTTPS URLs to work, you " +"may need to take some steps as described :ref:`here `." msgstr "" #: ../../docs/tutorials/networking/http_request_class.rst:55 @@ -48965,7 +48960,7 @@ msgstr "" #: ../../docs/tutorials/networking/http_request_class.rst:61 msgid "" -"Until now we have limited ourselves to requesting data from a server. But " +"Until now, we have limited ourselves to requesting data from a server. But " "what if you need to send data to the server? Here is a common way of doing " "it:" msgstr "" @@ -48985,9 +48980,9 @@ msgstr "" #: ../../docs/tutorials/networking/http_client_class.rst:6 msgid "" ":ref:`HTTPClient ` provides low-level access to HTTP " -"communication. For a more higher-level interface, you may want to take a " -"look at :ref:`HTTPRequest ` first, which has a tutorial " -"available :ref:`here `." +"communication. For a higher-level interface, you may want to take a look at :" +"ref:`HTTPRequest ` first, which has a tutorial available :" +"ref:`here `." msgstr "" #: ../../docs/tutorials/networking/http_client_class.rst:10 @@ -49069,7 +49064,7 @@ msgstr "" msgid "" "Unless you are working with large companies or corporations, or need to " "connect to someone else's servers (i.e., connecting to Google or some other " -"REST API provider via HTTPS) this method is not as useful." +"REST API provider via HTTPS), this method is not as useful." msgstr "" #: ../../docs/tutorials/networking/ssl_certificates.rst:56 @@ -49116,7 +49111,7 @@ msgstr "" #: ../../docs/tutorials/assetlib/what_is_assetlib.rst:11 msgid "" -"On the surface the Asset Library might look and function similar to asset " +"On the surface, the Asset Library might look and function similar to asset " "stores available for other engines, such as Unity's Asset Store, or Unreal " "Engine's Marketplace, where you can submit both freely-available assets, as " "well as paid, commercial ones. In addition, often times such assets are " @@ -49154,7 +49149,7 @@ msgstr "" #: ../../docs/tutorials/assetlib/what_is_assetlib.rst:34 msgid "" -"Not to the official one, though in the future there might be other asset " +"Not to the official one, though in the future, there might be other asset " "libraries which allow it. That said, you are allowed to monetize and sell " "Godot assets outside the Asset Library." msgstr "" @@ -49176,8 +49171,8 @@ msgstr "" #: ../../docs/tutorials/assetlib/using_assetlib.rst:18 msgid "" -"At the top you see the **header** which takes you to various other parts of " -"the AssetLib - at the moment it's empty as we are not logged in." +"At the top, you see the **header**, which takes you to various other parts " +"of the AssetLib - at the moment, it's empty, as we are not logged in." msgstr "" #: ../../docs/tutorials/assetlib/using_assetlib.rst:22 @@ -49324,7 +49319,7 @@ msgstr "" #: ../../docs/tutorials/assetlib/using_assetlib.rst:94 msgid "" "This will change the look of the AssetLib header. Now you get access to a " -"handful new functions:" +"handful of new functions:" msgstr "" #: ../../docs/tutorials/assetlib/using_assetlib.rst:97 @@ -49348,7 +49343,7 @@ msgstr "" #: ../../docs/tutorials/assetlib/using_assetlib.rst:103 msgid "" "You can learn how to submit assets to the Library, and what the asset " -"submission guidelines are, in the next part of this tutorial, ::ref:" +"submission guidelines are, in the next part of this tutorial, :ref:" "`doc_uploading_to_assetlib`." msgstr "" @@ -49363,24 +49358,20 @@ msgid "" "project, from the workspaces list." msgstr "" -#: ../../docs/tutorials/assetlib/using_assetlib.rst:113 -msgid "|image7| |image14|" -msgstr "" - -#: ../../docs/tutorials/assetlib/using_assetlib.rst:116 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:117 msgid "" "Click on it, and Godot will fetch info about the assets from the AssetLib. " "Once it's finished, you will see a window similar to what the AssetLib " "website looks like, with some differences:" msgstr "" -#: ../../docs/tutorials/assetlib/using_assetlib.rst:122 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:123 msgid "" "Similarly to the web version of the AssetLib, here you can search for assets " "by category, name, and sort them by factors such as name or edit date." msgstr "" -#: ../../docs/tutorials/assetlib/using_assetlib.rst:125 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:126 msgid "" "Notably, you can only fetch assets for the current version of Godot you are " "running. Also, you can only download Projects, Demos and Templates from the " @@ -49391,7 +49382,7 @@ msgid "" "search query for the changes to take place)." msgstr "" -#: ../../docs/tutorials/assetlib/using_assetlib.rst:133 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:134 msgid "" "In the future, you will be able to choose a different AssetLib provider to " "fetch assets from (using the Site dropdown menu), however currently only the " @@ -49400,24 +49391,24 @@ msgid "" "machine's web server (the localhost option)." msgstr "" -#: ../../docs/tutorials/assetlib/using_assetlib.rst:139 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:140 msgid "When you click on an asset, you will see more information about it." msgstr "" -#: ../../docs/tutorials/assetlib/using_assetlib.rst:143 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:144 msgid "" "If you click on the Install button, Godot will fetch an archive of the " "asset, and will track download progress of it at the bottom of the editor " "window. If the download fails, you can retry it using the Retry button." msgstr "" -#: ../../docs/tutorials/assetlib/using_assetlib.rst:149 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:150 msgid "" "When it finishes, you can proceed to install it using the Install button. " "This will bring up the Package Installer window." msgstr "" -#: ../../docs/tutorials/assetlib/using_assetlib.rst:154 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:155 msgid "" "Here you can see a list of all the files that will be installed. You can " "tick off any of the files that you do not wish to install, and Godot will " @@ -49426,7 +49417,7 @@ msgid "" "stating why it cannot be installed." msgstr "" -#: ../../docs/tutorials/assetlib/using_assetlib.rst:162 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:163 msgid "" "Once you are done, you can press the Install button, which will unzip all " "the files in the archive, and import any assets contained therein, such as " @@ -49434,7 +49425,7 @@ msgid "" "that the Package installation is complete." msgstr "" -#: ../../docs/tutorials/assetlib/using_assetlib.rst:169 +#: ../../docs/tutorials/assetlib/using_assetlib.rst:170 msgid "" "You may also use the Import button to import asset archives obtained " "elsewhere (such as downloading them directly from the AssetLib web " @@ -49449,8 +49440,8 @@ msgstr "" #: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:9 msgid "" -"This tutorial aims to serve as both a guide on how you can submit your own " -"assets to the Godot Asset Library and share them with the Godot community." +"This tutorial aims to serve as a guide on how you can submit your own assets " +"to the Godot Asset Library and share them with the Godot community." msgstr "" #: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:12 @@ -49506,7 +49497,7 @@ msgstr "" #: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:38 msgid "" -"The version of the engine that the asset works with. Currently it's not " +"The version of the engine that the asset works with. Currently, it's not " "possible to have a single asset entry contain downloads for multiple engine " "versions, so you may need to re-submit the asset multiple times, with an " "entry for each Godot version it supports. This is particularly important " @@ -49534,7 +49525,7 @@ msgstr "" #: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:51 msgid "" "Assets uploaded to the AssetLib are not hosted on it directly. Instead, they " -"point to repositories hosted on third-party Git providers such as GitHub, " +"point to repositories hosted on third-party Git providers, such as GitHub, " "GitLab or Bitbucket. This is where you choose which provider your asset " "uses, so the site can compute the final download link." msgstr "" @@ -49637,7 +49628,7 @@ msgstr "" #: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:91 msgid "" -"An URL to a image that will be used as a thumbnail for the preview. This " +"A URL to an image that will be used as a thumbnail for the preview. This " "option will be removed eventually, and thumbnails will be automatically " "computed instead." msgstr "" @@ -49681,13 +49672,14 @@ msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:8 msgid "" "A new architecture was introduced in Godot 3 called the AR/VR Server. On top " -"of this architecture specific implementations are available as interfaces " +"of this architecture, specific implementations are available as interfaces, " "most of which are plugins based on GDNative. This tutorial focuses purely on " "the core elements abstracted by the core architecture. This architecture has " "enough features for you to create an entire VR experience that can then be " -"deployed for various interfaces. However each platform often has some unique " -"features that are impossible to abstract. Such features will be documented " -"on the relevant interfaces and fall outside of the scope of this primer." +"deployed for various interfaces. However, each platform often has some " +"unique features that are impossible to abstract. Such features will be " +"documented on the relevant interfaces and fall outside of the scope of this " +"primer." msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:12 @@ -49696,9 +49688,9 @@ msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:14 msgid "" -"When Godot starts each available interface will make itself known to the AR/" -"VR server. GDNative interfaces are setup as singletons, as long as they are " -"added to the list of GDNative singletons in your project they will make " +"When Godot starts, each available interface will make itself known to the AR/" +"VR server. GDNative interfaces are setup as singletons; as long as they are " +"added to the list of GDNative singletons in your project, they will make " "themselves known to the server." msgstr "" @@ -49706,43 +49698,43 @@ msgstr "" msgid "" "You can use the function :ref:`get_interfaces() " "` to return a list of available " -"interfaces but for this tutorial we're going to use the :ref:`native mobile " -"VR interface ` in our examples. This interface is a " -"straightforward implementation that uses the 3DOF sensors on your phone for " -"orientation and outputs a stereoscopic image to screen. It is also available " -"in the Godot core and outputs to screen on desktop which makes it ideal for " -"prototyping or a tutorial such as this one." +"interfaces, but for this tutorial, we're going to use the :ref:`native " +"mobile VR interface ` in our examples. This " +"interface is a straightforward implementation that uses the 3DOF sensors on " +"your phone for orientation and outputs a stereoscopic image to the screen. " +"It is also available in the Godot core and outputs to screen on desktop, " +"which makes it ideal for prototyping or a tutorial such as this one." msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:18 -msgid "To enable an interface you execute the following code:" +msgid "To enable an interface, you execute the following code:" msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:35 msgid "" -"This code finds the interface we wish to use, initializes it and if that is " -"successful binds the main viewport to the interface. This last step gives " -"some control over the viewport to the interface which automatically enables " +"This code finds the interface we wish to use, initializes it and, if that is " +"successful, binds the main viewport to the interface. This last step gives " +"some control over the viewport to the interface, which automatically enables " "things like stereoscopic rendering on the viewport." msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:37 msgid "" -"For our mobile vr interface, and any interface where the main input is " +"For our mobile VR interface, and any interface where the main input is " "directly displayed on screen, the main viewport needs to be the viewport " "where arvr is set to true. But for interfaces that render on an externally " -"attached device you can use a secondary viewport. In this later case a " +"attached device, you can use a secondary viewport. In the latter case, a " "viewport that shows its output on screen will show an undistorted version of " -"the left eye while showing the fully processed stereoscopic output on the " +"the left eye, while showing the fully processed stereoscopic output on the " "device." msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:39 msgid "" -"Finally you should only initialize an interface once, switching scenes and " +"Finally, you should only initialize an interface once; switching scenes and " "reinitializing interfaces will just introduce a lot of overhead. If you want " -"to turn the headset off temporarily just disable the viewport or set arvr to " -"false on the viewport. In most scenarios though you wouldn't disable the " +"to turn the headset off temporarily, just disable the viewport or set arvr " +"to false on the viewport. In most scenarios though, you wouldn't disable the " "headset once you're in VR, this can be disconcerting to the gamer." msgstr "" @@ -49762,13 +49754,13 @@ msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:47 msgid "" -":ref:`ARVRCamera ` - a special subclass of the camera " +":ref:`ARVRCamera ` - a special subclass of the camera, " "which is positionally tracked" msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:48 msgid "" -":ref:`ARVRController ` - a new spatial class that " +":ref:`ARVRController ` - a new spatial class, which " "tracks the location of a controller" msgstr "" @@ -49790,23 +49782,23 @@ msgid "" "and only one of these somewhere in your scene. This node maps the center of " "your real world tracking space to a location in your virtual world. " "Everything else is positionally tracked in relation to this point. Where " -"this point lies exactly differs from one implementation to another but the " +"this point lies exactly differs from one implementation to another, but the " "best example to understand how this node works is to take a look at a room " "scale location. While we have functions to adjust the point to center it on " -"the player by default the origin point will be the center location of the " -"room you are in. As you physically walk around the room the location of the " +"the player by default, the origin point will be the center location of the " +"room you are in. As you physically walk around the room, the location of the " "HMD is tracked in relation to this center position and the tracking is " "mirror in the virtual world." msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:55 msgid "" -"To keep things simple, when you physically move around your room the ARVR " +"To keep things simple, when you physically move around your room, the ARVR " "Origin point stays where it is, the position of the camera and controllers " "will be adjusted according to your movements. When you move through the " "virtual world, either through controller input or when you implement a " -"teleport system it is the origin point which you will have to adjust the " -"position of." +"teleport system, it is the position of the origin point which you will have " +"to adjust." msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:58 @@ -49816,30 +49808,30 @@ msgid "" "It is a subclass of Godot's normal camera. However, its position is " "automatically updated each frame based on the physical orientation and " "position of the HMD. Also due to the precision required for rendering to an " -"HMD or rendering an AR overlay over a real world camera most of the standard " -"camera properties are ignored. The only properties of the camera that are " -"used are the near and far plane settings. The FOV, aspect ratio and " +"HMD or rendering an AR overlay over a real world camera, most of the " +"standard camera properties are ignored. The only properties of the camera " +"that are used are the near and far plane settings. The FOV, aspect ratio and " "projection mode are all ignored." msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:60 msgid "" -"Note that for our native mobile VR implementation there is no positional " -"tracking, only the orientation of the phone and by extension the HMD is " +"Note that, for our native mobile VR implementation, there is no positional " +"tracking, only the orientation of the phone and by extension, the HMD is " "tracked. This implementation artificially places the camera at a height (Y) " "of 1.85." msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:62 msgid "" -"Conclusion, your minimum setup in your scene to make AR or VR work should " +"Conclusion: your minimum setup in your scene to make AR or VR work should " "look like this:" msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:66 msgid "" -"And that's all you need to get started. Obviously you need to add something " -"more into your scene so there is something to see but after that you can " +"And that's all you need to get started. Obviously, you need to add something " +"more into your scene, so there is something to see, but after that, you can " "export the game to your phone of choice, pop it into a viewer and away you " "go." msgstr "" @@ -49856,27 +49848,27 @@ msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:73 msgid "" -"The first are our units. In normal 3D games you don't have to think a lot " -"about units. As long as everything is at the same scale a box sized 1 unit " +"The first are our units. In normal 3D games, you don't have to think a lot " +"about units. As long as everything is at the same scale, a box sized 1 unit " "by 1 unit by 1 unit can be any size from a cube you can hold in your hand to " -"something the size of a building. In AR and VR this changes because things " +"something the size of a building. In AR and VR, this changes because things " "in your virtual world are mapped to things in the real world. If you step 1 " "meter forward in the real world, but you only move 1 cm forward in your " "virtual world, you have a problem. The same with the position of your " -"controllers, if they don't appear in the right relative space it breaks the " -"immersion for the player. Most VR platforms including our AR/VR Server " -"assumes that 1 unit = 1 meter. The AR/VR server however has a property that " -"for convenience is also exposed on the ARVROrigin node called world scale. " -"For instance setting this to a value of 10 it changes our coordinate system " -"so 10 units = 1 meter." +"controllers; if they don't appear in the right relative space, it breaks the " +"immersion for the player. Most VR platforms, including our AR/VR Server, " +"assume that 1 unit = 1 meter. The AR/VR server, however, has a property " +"that, for convenience, is also exposed on the ARVROrigin node called world " +"scale. For instance, setting this to a value of 10 changes our coordinate " +"system so 10 units = 1 meter." msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:77 msgid "" "Performance is another thing that needs to be carefully considered. " -"Especially VR taxes your game a lot more then most people realise. For " -"mobile VR you have to be extra careful here but even for desktop games there " -"are three factors that make life extra difficult:" +"Especially VR taxes your game a lot more than most people realise. For " +"mobile VR, you have to be extra careful here, but even for desktop games, " +"there are three factors that make life extra difficult:" msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:79 @@ -49889,11 +49881,11 @@ msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:80 msgid "" -"A normal game will run acceptable on 30fps and ideally manages 60fps. That " +"A normal game will run acceptably on 30fps and ideally manages 60fps. That " "gives you a big range to play with between lower end and higher end " -"hardware. For any HMD application of AR or VR however 60fps is the absolute " -"minimum and you should target your games to run at a stable 90fps to ensure " -"your users don't get motion sickness right off the bat." +"hardware. For any HMD application of AR or VR, however, 60fps is the " +"absolute minimum and you should target your games to run at a stable 90fps " +"to ensure your users don't get motion sickness right off the bat." msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:81 @@ -49907,8 +49899,8 @@ msgstr "" #: ../../docs/tutorials/vr/vr_primer.rst:83 msgid "" "All in all, the workload your GPU has in comparison with a normal 3D game is " -"a fair amount higher. While things are in the pipeline to improve this such " -"as MultiView and foveated rendering these aren't supported on all devices. " +"a fair amount higher. While things are in the pipeline to improve this, such " +"as MultiView and foveated rendering, these aren't supported on all devices. " "This is why you see many VR games using a more art style and if you pay " "close attention to those VR games that go for realism, you'll probably " "notice they're a bit more conservative on the effects or use some good old " @@ -49943,7 +49935,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:18 msgid "" "In your 3D model program, see if there is a way to measure and use real " -"world distances. In Blender you can use the MeasureIt add-on, in Maya you " +"world distances. In Blender, you can use the MeasureIt add-on; in Maya, you " "can use the Measure Tool." msgstr "" @@ -49978,12 +49970,12 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:27 msgid "" -"How to make a :ref:`RigidBody ` based pick up and drop " +"How to make a :ref:`RigidBody `-based pick up and drop " "system." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:28 -msgid "How to make various items that can be used in VR" +msgid "How to make various items that can be used in VR." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:30 @@ -49996,17 +49988,17 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:35 msgid "" -"This tutorial assumes you know have experience working with the Godot " -"editor, have basic programming experience in GDScript, and have basic 3D " -"game development experience." +"This tutorial assumes you know how to and have experience working with the " +"Godot editor, have basic programming experience in GDScript, and have basic " +"3D game development experience." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:38 msgid "" -"Also, it is assumed you have both a OpenVR-ready headset and two OpenVR-" +"Also, it is assumed you have both an OpenVR-ready headset and two OpenVR-" "ready controllers! This tutorial was written using a Windows Mixed Reality " "headset on Windows 10, so the tutorial is written to work on that headset. " -"You may need to adjust the code to work with other VR headsets such as the " +"You may need to adjust the code to work with other VR headsets, such as the " "Oculus Rift or HTC Vive." msgstr "" @@ -50064,8 +50056,9 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:65 msgid "" "While these assets are not necessarily required to use the scripts provided " -"in this tutorial, they will make the tutorial much easier to follow as there " -"are several premade scenes we will be using throughout the tutorial series." +"in this tutorial, they will make the tutorial much easier to follow, as " +"there are several premade scenes we will be using throughout the tutorial " +"series." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:69 @@ -50088,7 +50081,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:76 msgid "" -"The other thing to notice before we jump into writing the code is how the :" +"The other thing to notice, before we jump into writing the code, is how the :" "ref:`ARVROrigin ` node works. How it works is kind of hard " "to explain, especially if you have never used VR before, but here is the " "gist of it: The :ref:`ARVROrigin ` node is the center " @@ -50121,7 +50114,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:88 msgid "" "Another thing to notice here is how we have everything set up under the :ref:" -"`ARVROrigin ` node. The player camera is a :ref:" +"`ARVROrigin ` node. The player camera is an :ref:" "`ARVRCamera ` that represents the player's head in the " "game. The :ref:`ARVRCamera ` will be offset by the " "player's height, and if there is room tracking, then the camera can move " @@ -50144,8 +50137,8 @@ msgstr "" msgid "" "The final thing to note is that there are two :ref:`ARVRController " "` nodes, and these will represent the left and right " -"controllers in 3D space. A :ref:`ARVRController ` with " -"an ID of 1 is the left hand, while a :ref:`ARVRController " +"controllers in 3D space. An :ref:`ARVRController ` " +"with an ID of 1 is the left hand, while an :ref:`ARVRController " "` with an ID of 2 is the right hand." msgstr "" @@ -50155,7 +50148,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:102 msgid "" -"First, let's get the VR up and going! While ``Game.tscn`` is open, select " +"Firstly, let's get the VR up and going! While ``Game.tscn`` is open, select " "the ``Game`` node and make a new script called ``Game.gd``. Add the " "following code:" msgstr "" @@ -50175,25 +50168,25 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:125 msgid "" -"First, we find a VR interface from the ARVR server. We do this because by " -"default Godot does not include any VR interfaces, but rather exposes a API " +"Firstly, we find a VR interface from the ARVR server. We do this because by " +"default Godot does not include any VR interfaces, but rather exposes an API " "so anyone can make AR/VR interfaces with GDNative/C++. Next, we check to see " -"if a OpenVR interface was found, and then we initialize it." +"if an OpenVR interface was found, and then we initialize it." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:128 msgid "" "Assuming nothing went wrong with initializing, we then turn the main :ref:" -"`Viewport ` into a AR/VR viewport, by setting ``arvr`` to " +"`Viewport ` into an AR/VR viewport, by setting ``arvr`` to " "``true``. We also set HDR to ``false``, since you cannot use HDR in OpenVR." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:131 msgid "" -"Then we disable V-Sync and set the target FPS to 90 frames per second. Most " -"VR headsets run at 90 Hz, and since the game will both display on the VR " -"headset and on the computer's monitor, we want to disable V-Sync and set the " -"target FPS manually so the computer's monitor does not drag the VR display " +"Then, we disable V-Sync and set the target FPS to 90 frames per second. Most " +"VR headsets run at 90 Hz, and since the game will display on both the VR " +"headset and the computer's monitor, we want to disable V-Sync and set the " +"target FPS manually, so the computer's monitor does not drag the VR display " "down to 60 FPS." msgstr "" @@ -50219,7 +50212,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:145 msgid "" "While perhaps interesting if we were making a VR film, we really want to do " -"more than stand around and look. Currently we cannot move outside of the " +"more than stand around and look. Currently, we cannot move outside of the " "room tracking boundaries (assuming your VR headset has room tracking) and we " "cannot interact with anything! Let's change that!" msgstr "" @@ -50235,15 +50228,15 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:151 msgid "" "Open either ``Left_Controller.tscn`` or ``Right_Controller.tscn``. Feel free " -"to look at how the scene is set up; there is only a couple things of note to " -"point out." +"to look at how the scene is set up; there are only a couple things of note " +"to point out." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:153 msgid "" -"First, notice how there is a couple :ref:`Raycast ` nodes. We " -"will be using one :ref:`Raycast ` to teleport around the game " -"world (``Raycast``) and we will use the other for picking up objects " +"Firstly, notice how there are a couple :ref:`Raycast ` nodes. " +"We will be using one :ref:`Raycast ` to teleport around the " +"game world (``Raycast``) and we will use the other for picking up objects " "(``GrabCast``) if the player is using :ref:`Raycast ` nodes " "to pick up objects." msgstr "" @@ -50323,12 +50316,12 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:426 msgid "" -"``teleport_pos``: The position the teleport :ref:`Raycast ` " -"is aimed at." +"``teleport_pos``: The position at which the teleport :ref:`Raycast " +"` is aimed." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:427 -msgid "``teleport_mesh``: The meshed used to represent the teleport position." +msgid "``teleport_mesh``: The mesh used to represent the teleport position." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:428 @@ -50367,8 +50360,8 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:438 msgid "" -"First we get the teleport :ref:`Raycast ` node and assign it " -"to ``teleport_raycast``." +"Firstly, we get the teleport :ref:`Raycast ` node and assign " +"it to ``teleport_raycast``." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:440 @@ -50402,7 +50395,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:454 msgid "" -"First, we check to see if the teleportation button is down or not. If the " +"Firstly, we check to see if the teleportation button is down or not. If the " "teleportation button is down, we then force the teleportation :ref:`Raycast " "` to update, which will give us frame perfect collision " "detection. We then check to see if the :ref:`Raycast ` is " @@ -50413,7 +50406,7 @@ msgstr "" msgid "" "Next, we check to see if the collision body the :ref:`Raycast " "` is colliding with is a :ref:`StaticBody " -"`. We do this to ensures the player can only teleport on :" +"`. We do this to ensure the player can only teleport on :" "ref:`StaticBody ` nodes. We then check to see if the ``Y`` " "value returned by the :ref:`Raycast `'s " "``get_collision_normal`` function is more than ``0.85``, which is mostly " @@ -50434,7 +50427,7 @@ msgid "" "` is active or not. If the :ref:`ARVRController " "` is active, then that means there is a controller and " "it is being tracked. If the controller is active, we then reset " -"``controller_velocity`` to a empty :ref:`Vector3 `." +"``controller_velocity`` to an empty :ref:`Vector3 `." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:467 @@ -50448,9 +50441,9 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:470 msgid "" -"Next we calculate the velocity from the position the controller currently " -"is, from the position the controller was at. We can use this difference in " -"position to help track the controller's velocity." +"Next, we calculate the velocity from the position where the controller is " +"currently, from the position the controller was at. We can use this " +"difference in position to help track the controller's velocity." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:473 @@ -50464,28 +50457,28 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:476 msgid "" "The way we are calculating velocity is not perfect by any means, since it " -"relies on a consistent amount of frames per second. Ideally we would be able " -"to find the velocity directly from the VR controller but currently in OpenVR " -"there is not way to access the controller's velocity. We can get pretty " -"close to the real velocity by comparing positions between frames though, and " -"this will work just fine for this project." +"relies on a consistent amount of frames per second. Ideally, we would be " +"able to find the velocity directly from the VR controller, but currently in " +"OpenVR, there is no way to access the controller's velocity. We can get " +"pretty close to the real velocity by comparing positions between frames " +"though, and this will work just fine for this project." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:480 msgid "" -"Then we check to see if we have more than 30 stored velocities (more than a " +"Then, we check to see if we have more than 30 stored velocities (more than a " "third of a second). If there are more than 30, we remove the oldest velocity " "from ``prior_controller_velocities``." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:484 msgid "" -"Next we check to see if there is a held object. If there is, we update the " -"position and rotation of the held object to the position and rotation of " +"Next, we check to see whether there is a held object. If there is, we update " +"the position and rotation of the held object to the position and rotation of " "``grab_pos_node``. Because of how scale works, we need to temporarily store " -"the scale and then reset the scale once we have updated the transform, " -"otherwise the scale will always be the same as the controller, which will " -"break the immersion if the player grabs a scaled object." +"the scale and then reset the scale once we have updated the transform; " +"otherwise, the scale would always be the same as the controller, which would " +"ruin immersion if the player grabbed a scaled object." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:489 @@ -50496,8 +50489,8 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:491 msgid "" -"First, we convert the axis values into :ref:`Vector2 ` " -"variables so we can process them. We invert the X axis so moving the " +"Firstly, we convert the axis values into :ref:`Vector2 ` " +"variables, so we can process them. We invert the X axis, so moving the " "trackpad/joystick left will move the player left." msgstr "" @@ -50509,7 +50502,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:496 msgid "" -"Next we account for dead zones on both the trackpad and the joystick. The " +"Next, we account for dead zones on both the trackpad and the joystick. The " "code for doing this is adapted from the link below, and I would highly " "recommend looking at it." msgstr "" @@ -50539,7 +50532,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:506 msgid "" -"Then we calculate how much the player will be moving by adding both the " +"Then, we calculate how much the player will be moving by adding both the " "trackpad and the joystick vectors together and normalizing them." msgstr "" @@ -50571,61 +50564,62 @@ msgstr "" msgid "" "If the button pressed is button 15, which for the Windows Mixed Reality " "controllers is the trigger button, we will interact with the held object " -"assuming the controller is holding one, and if the player is not holding a " +"assuming the controller is holding one, and if the player is not holding an " "object, we will try to start teleporting." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:521 msgid "" -"If the controller is holding a object, and the held object has a method/" +"If the controller is holding an object, and the held object has a method/" "function called ``interact``, we call the ``interact`` function on the held " "object." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:524 msgid "" -"If the controller is not holding a object, we then check to make sure the " -"teleportation mesh is not visible. This check ensure the player cannot " -"teleport cannot teleport with both hands/controllers at the same time. If " -"the teleportation mesh is not visible, we set ``teleport_button_down`` to " -"``true``, make ``teleport_mesh`` visible, and make the teleportation raycast " -"visible. This makes it where the teleportation mesh will follow the :ref:" -"`Raycast ` coming from the pointer finger of the hand." +"If the controller is not holding an object, we then check to make sure the " +"teleportation mesh is not visible. This check ensures the player cannot " +"teleport with both hands/controllers at the same time. If the teleportation " +"mesh is not visible, we set ``teleport_button_down`` to ``true``, make " +"``teleport_mesh`` visible, and make the teleportation raycast visible. This " +"makes it where the teleportation mesh will follow the :ref:`Raycast " +"` coming from the pointer finger of the hand." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:529 msgid "" -"If the button pressed is button 2, which for the Windows Mixed Reality " -"controllers is the grab/grip button, we will grab/throw a object." +"If the button pressed is button 2, which, for the Windows Mixed Reality " +"controllers, is the grab/grip button, we will grab/throw an object." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:531 msgid "" -"First, we make sure the player is not trying to teleport, as we do not want " -"the player to be able to grab something while in the middle of trying to " -"teleport." +"Firstly, we make sure the player is not trying to teleport, as we do not " +"want the player to be able to grab something while in the middle of trying " +"to teleport." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:533 msgid "" -"Then we check to see if the controller is already holding a object or not." +"Then, we check to see whether the controller is already holding a object or " +"not." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:535 msgid "" -"If the controller is not holding a object, we check to see which grab mode " +"If the controller is not holding an object, we check to see which grab mode " "the player is using." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:537 msgid "" -"If the player is using the ``AREA`` grab mode, we then get all of the bodies " -"overlapping the grab :ref:`Area `. We go through all of the " -"bodies in the grab :ref:`Area ` and see if there is a :ref:" -"`RigidBody `. We also check to make sure any :ref:" -"`RigidBody ` nodes in the :ref:`Area ` do not " -"have a variable called ``NO_PICKUP``, since we do not want to be able to " -"pick up nodes with that variable." +"If the player is using the ``AREA`` grab mode, we then get all the bodies " +"overlapping the grab :ref:`Area `. We go through all the bodies " +"in the grab :ref:`Area ` and see if there is a :ref:`RigidBody " +"`. We also check to make sure any :ref:`RigidBody " +"` nodes in the :ref:`Area ` do not have a " +"variable called ``NO_PICKUP``, since we do not want to be able to pick up " +"nodes with that variable." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:541 @@ -50638,14 +50632,14 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:544 msgid "" "If the player is using the ``RAYCAST`` grab mode, we first force the :ref:" -"`Raycast ` to update. We then check to see if the :ref:" +"`Raycast ` to update. We then check to see whether the :ref:" "`Raycast ` is colliding with something." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:547 msgid "" "If the :ref:`Raycast ` is colliding with something, we then " -"check to see if what is colliding with is a :ref:`RigidBody " +"check to see if what it is colliding with is a :ref:`RigidBody " "`, and that it does not have a variable called " "``NO_PICKUP``. If the :ref:`Raycast ` is colliding with a :" "ref:`RigidBody `, and it does not have a variable called " @@ -50658,9 +50652,9 @@ msgid "" "` in the grab :ref:`Area `, we assign " "``held_object`` to it. Then we store the now held :ref:`RigidBody " "`'s information in ``held_object_data``. We are storing " -"the :ref:`RigidBody ` mode, layer, and mask so later when " -"we drop it, we can reset all of those variables back to what they were " -"before we picked up the :ref:`RigidBody `." +"the :ref:`RigidBody ` mode, layer, and mask so later, when " +"we drop it, we can reset all those variables back to what they were before " +"we picked up the :ref:`RigidBody `." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:555 @@ -50687,27 +50681,27 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:564 msgid "" -"If the controller is not holding a object, and the button pressed is 2, we " +"If the controller is not holding an object, and the button pressed is 2, we " "want to drop/throw the held object." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:566 msgid "" -"First, we set the held :ref:`RigidBody `'s mode, layer, and " -"mask back to what they were when we picked the object up. We then apply a " -"impulse to the held object, using the controller's velocity as the force." +"Firstly, we set the held :ref:`RigidBody `'s mode, layer, " +"and mask back to what they were when we picked the object up. We then apply " +"an impulse to the held object, using the controller's velocity as the force." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:569 msgid "" "If the previously held :ref:`RigidBody ` has a function " "called ``dropped``, we call it. If the :ref:`RigidBody ` " -"has a variable called ``controller`` we set it to ``null``." +"has a variable called ``controller``, we set it to ``null``." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:572 msgid "" -"Then we set ``held_object`` to ``null``, since we are no longer holding any " +"Then, we set ``held_object`` to ``null``, since we are no longer holding any " "objects, and we make the hand mesh visible again." msgstr "" @@ -50720,7 +50714,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:576 msgid "" -"Finally, regardless of whether we are grabbing a object or releasing it, we " +"Finally, regardless of whether we are grabbing an object or releasing it, we " "play the sound loaded into ``AudioStreamPlayer3D``, which is a pick-up/drop " "noise." msgstr "" @@ -50728,8 +50722,8 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:578 msgid "" "The last thing we are doing in ``button_pressed`` is checking to see if the " -"button pressed is 1, which for the Windows Mixed Reality controllers is the " -"menu button." +"button pressed is 1, which, for the Windows Mixed Reality controllers, is " +"the menu button." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:580 @@ -50751,9 +50745,10 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:588 msgid "" -"First, we check to see if ``teleport_button_down`` is ``true``. If it is, " -"that means the player is intending to teleport, while if it is ``false``, " -"the player has simply released the trigger while holding a object." +"Firstly, we check to see whether ``teleport_button_down`` is ``true``. If it " +"is, that means the player is intending to teleport, while if it is " +"``false``, the player has simply released the trigger while holding an " +"object." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:591 @@ -50774,10 +50769,10 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:596 msgid "" "Because we want to teleport the player in their current position to the " -"teleport position, and remember because of room-scale tracking their current " -"position can be offset from the origin, we have to figure out that offset so " -"when we teleport we can remove it so that player's current position is " -"teleported to the teleport position." +"teleport position, and remember, because of room-scale tracking, their " +"current position can be offset from the origin, we have to figure out that " +"offset so when we teleport, we can remove it so that player's current " +"position is teleported to the teleport position." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:599 @@ -50788,13 +50783,13 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:601 msgid "" -"Then we teleport the :ref:`ARVROrigin ` to the teleport " +"Then, we teleport the :ref:`ARVROrigin ` to the teleport " "position, applying the camera offset." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:603 msgid "" -"Regardless of whether we teleported or not, we reset all of the teleport-" +"Regardless of whether we teleported or not, we reset all the teleport-" "related variables so the controller has to get new ones before teleporting " "again." msgstr "" @@ -50806,16 +50801,16 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:609 msgid "" -"When a body enters or exists the sleep area, we check if it has a variable " -"called ``can_sleep``. If it does, we then set it to ``false`` and wake the " -"body if it has entered the sleep area, while if it has exited we set it to " -"``true`` so the :ref:`RigidBody ` nodes can sleep (which " -"can decrease CPU usage)." +"When a body enters or exists the sleep area, we check whether it has a " +"variable called ``can_sleep``. If it does, we then set it to ``false`` and " +"wake the body if it has entered the sleep area, while if it has exited, we " +"set it to ``true`` so the :ref:`RigidBody ` nodes can sleep " +"(which can decrease CPU usage)." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:614 msgid "" -"Okay, phew! That was a lot of code! Add the same script, ``VR_Controller." +"Okay, whew! That was a lot of code! Add the same script, ``VR_Controller." "gd`` to the other controller so both controllers have the same script." msgstr "" @@ -50893,7 +50888,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:678 msgid "" -"Then we get the left and right controllers, assigning them to " +"Then, we get the left and right controllers, assigning them to " "``controller_one`` and ``controller_two``." msgstr "" @@ -50928,9 +50923,8 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:694 msgid "" -"First, let's start by making some targets we will destroy in various " -"different ways with various different special :ref:`RigidBody " -"` nodes." +"Firstly, let's start by making some targets we will destroy in various ways " +"with various special :ref:`RigidBody ` nodes." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:696 @@ -50952,7 +50946,8 @@ msgid "Let's go over how this script works, starting with the class variables." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:748 -msgid "``destroyed``: A variable to track if this target is destroyed or not." +msgid "" +"``destroyed``: A variable to track whether this target is destroyed or not." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:749 @@ -50995,9 +50990,9 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:765 msgid "" -"First, we add time to ``destroyed_timer``. Then we check to see if enough " -"time has passed and we can destroy the target. If enough time has passed, we " -"free/destroy the target using ``queue_free``." +"Firstly, we add time to ``destroyed_timer``. Then we check to see whether " +"enough time has passed and we can destroy the target. If enough time has " +"passed, we free/destroy the target using ``queue_free``." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:770 @@ -51005,7 +51000,8 @@ msgid "Finally, let's go over ``damage``." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:772 -msgid "First, we check to make sure the target has not already been destroyed." +msgid "" +"Firstly, we check to make sure the target has not already been destroyed." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:774 @@ -51022,14 +51018,14 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:778 msgid "" -"First, we disable the collision shape and make the whole target mesh " +"Firstly, we disable the collision shape and make the whole target mesh " "invisible. Next, we spawn/instance the :ref:`RigidBody ` " "version of the target, and instance it at this target's position." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:781 msgid "" -"Then we set ``destroyed`` to ``true`` and start processing " +"Then, we set ``destroyed`` to ``true`` and start processing " "``_physics_process``. Finally, we play a sound, and remove a sphere from " "``Game.gd`` by calling ``remove_sphere``." msgstr "" @@ -51042,7 +51038,8 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:788 msgid "" -"First, open up ``Game.gd`` and add the following additional class variables:" +"Firstly, open up ``Game.gd`` and add the following additional class " +"variables:" msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:795 @@ -51060,14 +51057,14 @@ msgid "" msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:808 -msgid "What this function does is it removes one from ``spheres_left``." +msgid "What this function does is it subtracts one from ``spheres_left``." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:810 msgid "" -"Then it checks to see if ``sphere_ui`` is not null, and if it is not, then " -"it calls its ``update_ui`` function, passing in the amount of sphere's left. " -"We'll add the UI code later in this part." +"Then, it checks to see whether ``sphere_ui`` is not null, and if it is not, " +"then it calls its ``update_ui`` function, passing in the amount of spheres " +"left. We'll add the UI code later in this part." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:813 @@ -51086,11 +51083,11 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:820 msgid "" -"There is a few things to note here. The first thing to note is how " +"There are a few things to note here. The first thing to note is how " "everything is rotated. This is to make the pistol rotate correctly when the " "player grabs it. The other thing to notice is how there is a laser sight " -"mesh, and a flash mesh, both of these do what you'd expect: act as a laser " -"pointer and act as a muzzle flash respectively." +"mesh, and a flash mesh; both of these do what you'd expect: act as a laser " +"pointer and muzzle flash, respectively." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:823 @@ -51145,33 +51142,33 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:912 msgid "" -"First, we check to see if the flash is visible. We do this by checking to " +"Firstly, we check to see if the flash is visible. We do this by checking to " "see if ``flash_timer`` is more than zero. This is because ``flash_timer`` " -"will be a inverted timer, a timer that counts down instead of counting up." +"will be an inverted timer, a timer that counts down instead of counting up." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:915 msgid "" -"If ``flash_timer`` is more than zero, we remove ``delta`` from it and check " -"to see if it is equal to zero or less. If it is, we make the flash mesh " -"invisible." +"If ``flash_timer`` is more than zero, we subtract ``delta`` from it and " +"check to see whether it is equal to zero or less. If it is, we make the " +"flash mesh invisible." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:918 msgid "" "This makes it where the flash mesh becomes invisible after ``FLASH_TIME`` " -"many seconds has gone by." +"many seconds have gone by." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:922 msgid "" -"Now let's look at ``interact``, which is called when the trigger button on " +"Now, let's look at ``interact``, which is called when the trigger button on " "the VR controller is pressed and the pistol is being held." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:924 msgid "" -"First, we check to see if the flash timer is less than or equal to zero. " +"Firstly, we check to see if the flash timer is less than or equal to zero. " "This check makes it where we cannot fire when the flash is visible, limiting " "how often the pistol can fire." msgstr "" @@ -51192,7 +51189,7 @@ msgstr "" msgid "" "If the :ref:`Raycast ` is colliding with something, we get " "the collider. We check to see if the collider has the ``damage`` function, " -"and if it does we call it. If it does not, we then check to see if the " +"and if it does, we call it. If it does not, we then check to see if the " "collider has the ``apply_impulse`` function, and if it does, we call it " "after calculating the direction from the :ref:`Raycast ` to " "the collider." @@ -51207,7 +51204,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:939 msgid "" "Finally, let's look at ``picked_up`` and ``dropped``, which are called when " -"the pistol is picked up and dropped respectively." +"the pistol is picked up and dropped, respectively." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:941 @@ -51273,13 +51270,13 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1025 msgid "" "The only other change, besides there being nothing in ``picked_up`` and " -"``dropped`` is in ``interact``." +"``dropped``, is in ``interact``." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1027 msgid "" "Now we go through each :ref:`Raycast ` in ``raycasts``. We " -"then rotate it on the X and Z axis, making within a 10 to ``-10`` cone. From " +"then rotate it on the X and Z axes, making within a 10 to ``-10`` cone. From " "there, we process each :ref:`Raycast ` like we did the " "single :ref:`Raycast ` in the pistol, nothing changed at all, " "we are just doing it five times, once for each :ref:`Raycast " @@ -51323,7 +51320,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1048 msgid "" -"The only thing to notice his how long the explosion :ref:`Particles " +"The only thing to notice is how long the explosion :ref:`Particles " "` node will last, their lifetime, which is 0.75 seconds. We " "need to know this so we can time the removal of the bomb with the end of the " "explosion :ref:`Particles `." @@ -51348,7 +51345,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1145 -msgid "``FUSE_TIME``: The length of time the fuse burns for." +msgid "``FUSE_TIME``: The length of time for which the fuse burns." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1146 @@ -51406,7 +51403,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1160 msgid "" -"First, we get all of the nodes and assign them to the proper variables for " +"Firstly, we get all the nodes and assign them to the proper variables for " "later use." msgstr "" @@ -51424,15 +51421,15 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1169 msgid "" -"First we check to see if ``fuse_timer`` is less than ``FUSE_TIME``. If " -"``fuse_timer`` is less than ``FUSE_TIME``, then the bomb must be burning " +"Firstly we check to see whether ``fuse_timer`` is less than ``FUSE_TIME``. " +"If ``fuse_timer`` is less than ``FUSE_TIME``, then the bomb must be burning " "down the fuse." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1171 msgid "" -"We then add time to ``fuse_timer``, and check to see if the bomb has waited " -"long enough and has burned through the entire fuse." +"We then add time to ``fuse_timer``, and check to see whether the bomb has " +"waited long enough and has burned through the entire fuse." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1173 @@ -51453,17 +51450,18 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1179 msgid "" -"Then we go through everything inside the explosion :ref:`Area `. " -"We make sure the bodies inside the explosion :ref:`Area ` are " -"not the bomb itself, since we do not want to explode the bomb with itself. " -"We then check to see if the bodies have the ``damage`` method/function, and " -"if it does we call that, while if it does not we check to see if it has the " -"``apply_impulse`` method/function, and call that instead." +"Then, we go through everything inside the explosion :ref:`Area " +"`. We make sure the bodies inside the explosion :ref:`Area " +"` are not the bomb itself, since we do not want to explode the " +"bomb with itself. We then check to see whether the bodies have the " +"``damage`` method/function, and if it does, we call that, while if it does " +"not, we check to see if it has the ``apply_impulse`` method/function, and " +"call that instead." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1183 msgid "" -"Then we set ``explode`` to true since the bomb has exploded, and we play a " +"Then, we set ``explode`` to true since the bomb has exploded, and we play a " "sound." msgstr "" @@ -51501,7 +51499,7 @@ msgid "" "building. Because of how we are calculating velocity, it is easiest to throw " "bombs in a trusting-like motion as opposed to a more natural throwing like " "motion. The smooth curve of a throwing-like motion is harder to track, and " -"the because of how we are tracking velocity it does not always work." +"the because of how we are tracking velocity, it does not always work." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1205 @@ -51527,7 +51525,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1214 msgid "" -"If you know how to find the point where a :ref:`Area ` and a :" +"If you know how to find the point where an :ref:`Area ` and a :" "ref:`CollisionObject ` meet, please let me know and/" "or make a PR on the Godot documentation! This method of using several small :" "ref:`Area ` nodes works okay, but it is not ideal." @@ -51553,7 +51551,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1284 msgid "" "``controller``: The controller that is holding the sword, if there is one. " -"This is set by the controller, so we do not need to set it here in ``Sword." +"This is set by the controller, so we do not need to set it here, in ``Sword." "gd``." msgstr "" @@ -51565,8 +51563,8 @@ msgstr "" msgid "" "All we are doing here is connecting each of the :ref:`Area ` " "nodes ``body_entered`` signal to the ``body_entered_sword`` function, " -"passing in a additional argument which will be the number of the damage :ref:" -"`Area `, so we can figure out where on the sword the body " +"passing in an additional argument, which will be the number of the damage :" +"ref:`Area `, so we can figure out where on the sword the body " "collided." msgstr "" @@ -51575,7 +51573,8 @@ msgid "Now let's go over ``body_entered_sword``." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1297 -msgid "First, we make sure the body the sword has collided with is not itself." +msgid "" +"Firstly, we make sure the body the sword has collided with is not itself." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1299 @@ -51586,16 +51585,16 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1301 msgid "" -"Next, we check to see if the body the sword collided with has the ``damage`` " -"function, and if it does, we call it and play a sound." +"Next, we check to see whether the body the sword collided with has the " +"``damage`` function, and if it does, we call it and play a sound." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1303 msgid "" -"If it does not have the damage function, we then check to see if it has the " -"``apply_impulse`` function. If it does, we then calculation the direction " +"If it does not have the damage function, we then check to see whether it has " +"the ``apply_impulse`` function. If it does, we then calculate the direction " "from the sword part the body collided with to the body. We then check to see " -"if the sword is being held or not." +"whether the sword is being held or not." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1306 @@ -51628,7 +51627,7 @@ msgstr "" msgid "" "Open up ``Game.tscn`` and then expand the ``GUI`` :ref:`MeshInstance " "`. From there, expand the ``GUI`` :ref:`Viewport " -"` node and then select the ``base_control`` node. Add a new " +"` node and then select the ``Base_Control`` node. Add a new " "script called ``Base_Control``, and add the following:" msgstr "" @@ -51638,7 +51637,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1344 msgid "" -"First, in ``_ready``, we get the :ref:`Label ` that shows how " +"Firstly, in ``_ready``, we get the :ref:`Label ` that shows how " "many spheres are left and assign it to the ``sphere_count_label`` class " "variable. Next, we get ``Game.gd`` by using ``get_tree().root`` and assign " "``sphere_ui`` to this script." @@ -51648,8 +51647,8 @@ msgstr "" msgid "" "In ``update_ui``, we change the sphere :ref:`Label `'s text. If " "there is at least one sphere remaining, we change the text to show how many " -"sphere's are still left in the world. If there are no more spheres " -"remaining, we change the text and congratulate the player." +"spheres are still left in the world. If there are no more spheres remaining, " +"we change the text and congratulate the player." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1351 @@ -51675,9 +51674,9 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1396 msgid "" -"First, we get the starting global :ref:`Transform ` in " +"Firstly, we get the starting global :ref:`Transform ` in " "``_ready``, and assign it to ``start_transform``. We will use this to reset " -"the position of the reset box ever so often." +"the position of the reset box every so often." msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1398 @@ -51703,11 +51702,11 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1407 msgid "" "With that done, when you grab and interact with the reset box, the entire " -"scene will reset/restart and you can destroy all of the targets again!" +"scene will reset/restart and you can destroy all the targets again!" msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1414 -msgid "Phew! That was a lot of work. Now you have a fairly simple VR project!" +msgid "Whew! That was a lot of work. Now you have a fairly simple VR project!" msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1418 @@ -51718,7 +51717,7 @@ msgstr "" #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:1420 msgid "" -"This hopefully will serve as a introduction into making fully featured VR " +"This will hopefully serve as an introduction to making fully-featured VR " "games in Godot! The code written here can be expanded to make puzzle games, " "action games, story-based games, and more!" msgstr "" @@ -51744,9 +51743,9 @@ msgid "" "A plugin is a great way to extend the editor with useful tools. It can be " "made entirely with GDScript and standard scenes, without even reloading the " "editor. Unlike modules, you don't need to create C++ code nor recompile the " -"engine. While this makes plugins less powerful, there's still a lot of " -"things you can do with them. Note that a plugin is similar to any scene you " -"can already make, except it is created using a script to add functionality." +"engine. While this makes plugins less powerful, there are still many things " +"you can do with them. Note that a plugin is similar to any scene you can " +"already make, except it is created using a script to add functionality." msgstr "" #: ../../docs/tutorials/plugins/editor/making_plugins.rst:16 @@ -51764,7 +51763,7 @@ msgstr "" #: ../../docs/tutorials/plugins/editor/making_plugins.rst:24 msgid "" "Before starting, create a new empty project wherever you want. This will " -"serve as base to develop and test the plugins." +"serve as a base to develop and test the plugins." msgstr "" #: ../../docs/tutorials/plugins/editor/making_plugins.rst:27 @@ -51886,7 +51885,7 @@ msgstr "" #: ../../docs/tutorials/plugins/editor/making_plugins.rst:148 msgid "" -"When you add the node, you can see that it already have the script you " +"When you add the node, you can see that it already has the script you " "created attached to it. Set a text to the button, save and run the scene. " "When you click the button, you can see some text in the console:" msgstr "" @@ -51951,7 +51950,7 @@ msgstr "" #: ../../docs/tutorials/plugins/editor/making_plugins.rst:221 msgid "" -"Note that while the dock will initially appear at its specified position, " +"Note that, while the dock will initially appear at its specified position, " "the user can freely change its position and save the resulting layout." msgstr "" @@ -58758,10 +58757,6 @@ msgstr "" msgid "It should break at the point!" msgstr "" -#: ../../docs/development/cpp/configuring_an_ide.rst:267 -msgid "Visual Studio Code" -msgstr "" - #: ../../docs/development/cpp/configuring_an_ide.rst:269 msgid "" "Ensure that C/C++ extension is installed. You can find instructions in `docs "