官术网_书友最值得收藏!

Moving the player through a C# script

We want the player to move, so in order to do that, we will create our own piece of functionality in a script, effectively creating our own custom component in the process:

  1. To create a script, we will go to the Project window and select the create button in the top-left corner of the menu by clicking the + icon, and then we will select Folder:
You can also access the Create menu by right-clicking on the right-hand side of the Project window. With this method, you can right-click and then select Create | Folder.
  1. From there, we'll name this folder Scripts. It's always a good idea to organize our projects, so this will help with that.
If you happen to misspell the name, go ahead and select the object and then single-click on the name, and it'll let you rename it.
  1. Double-click on the folder to enter it, and now you can create a script by going to Create | C# Script and renaming the newly created item to PlayerBehaviour (no spaces).
The reason I'm using the "behaviour" spelling instead of "behavior" is that all components in Unity are children of another class called MonoBehaviour, and I'm following Unity's lead in that regard.
  1. Double-click on the script to open up the script editor (IDE) of your choice and add the following code to it:
using UnityEngine;

public class PlayerBehaviour : MonoBehaviour
{
// A reference to the Rigidbody component
private Rigidbody rb;

// How fast the ball moves left/right
public float dodgeSpeed = 5;

// How fast the ball moves forwards automatically
public float rollSpeed = 5;

// Start is called before the first frame update
void Start()
{
// Get access to our Rigidbody component
rb = GetComponent<Rigidbody>();
}

// Update is called once per frame
void Update()
{
// Check if we're moving to the side
var horizontalSpeed = Input.GetAxis("Horizontal") *
dodgeSpeed;

rb.AddForce(horizontalSpeed, 0, rollSpeed);
}
}

In the preceding code, we have a couple of variables that we will be working with. The rb variable is a reference to the GameObject's Rigidbody component that we added previously. It gives us the ability to make the object move, which we will use in the Update function. We also have two variables, dodgeSpeed and rollSpeed, which dictate how quickly the player will move when moving left/right or when moving forward, respectively.

Since our object has only one Rigidbody component, we assign rb once in the Start function, which is called when the GameObject is loaded into the scene at the beginning of the game.

Then, we use the Update function to check whether our player is pressing keys to move left or right as based on Unity's Input Manager system. By default, the Input.GetAxis function will return to us a negative value, moving to -1 if we press A or the left arrow. If we press the right arrow or D, we will get a positive value up to 1 returned to us, and the input will move toward 0 if nothing is pressed. We then multiply this by dodgeSpeed in order to increase the speed so that it is easier to be seen.

For more information on the Input Manager, check out  https://docs.unity3d.com/Manual/class-InputManager.html.

Finally, once we have that value, we will apply a force to our ball's horizontalSpeed units on the X-axis and rollSpeed in the Z-axis.

  1. Save your script, and return to the Unity Editor.
  1. We will now need to assign this script to our player by selecting the Player object in the Hierarchy window, and then in the Inspector window, we will drag and drop the PlayerBehaviour script from the Project window to be on top of the Player object. If all goes well, we should see the script appear on our object, as follows:
Note that when writing scripts, if we declare a variable as public, it will show up in the Inspector window for us to be able to set it. We typically set a variable as public when we want designers to tweak the values for gameplay purposes, but it also allows other scripts to access the property in code. By default, variables and methods are private, which means they can only be used within the class.
For more information on access modifiers and how they work in Unity as well as some additional protections you can put into place, check out  https://www.lumpystudios.com/index.php/the-lumpy-blog/34-access-modifiers-in-unity.
  1. Save your scene by going to File | Save. Afterward, play the game and use the left and right arrows to see the player moving according to your input, but no matter what, moving forward by default:

With this, you can see that the ball moves automatically and our input is received correctly!

主站蜘蛛池模板: 正蓝旗| 且末县| 屯留县| 梧州市| 安多县| 明光市| 修武县| 合阳县| 葫芦岛市| 镇江市| 南阳市| 大英县| 陇川县| 留坝县| 连平县| 灵山县| 泰州市| 盖州市| 辉南县| 三都| 梁平县| 临沂市| 利辛县| 丹巴县| 宁乡县| 山西省| 天峨县| 肥城市| 皮山县| 周宁县| 中超| 罗田县| 平塘县| 偏关县| 巢湖市| 顺昌县| 定边县| 通许县| 炎陵县| 简阳市| 句容市|