C#

2 Ошибки в uniti, 2 одной цифры, точнее cs1501, помогите, код представлен ниже visualStudio 2019

 using UnityEngine; 

public class PlayerMove : MonoBehaviour
{
public Rigidbody rb;

public float runSpeed = 500f;
public float strafeSpeed = 500f;
public float jumpForce = 15f;

protected bool straleLeft = false;
protected bool straleRight = false;
protected bool doJump = false;


void Update()
{
if (Input.GetKey("a"))
{
straleLeft = true;
}
else
{
straleLeft = false;
}

if (Input.GetKey("d"))
{
straleRight = true;
}
else
{
straleRight = false;
}

if (Input.GetKeyDown("space"))
{
doJump = true;
}
}

void FixedUpdate()
{
// rb.AddForce(runSpeed, 0, 0, * Time.deltaTime);

if (straleLeft)
{
rb.AddForce(0, 0, -strafeSpeed * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
}

if (straleRight)
{
rb.AddForce(0, 0, strafeSpeed * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
}
}
}
Привет! В Вашем коде есть две ошибки:

1. Ошибка в строке `rb.AddForce(0, 0, -strafeSpeed * Time.deltaTime, 0, 0, ForceMode.VelocityChange);`. У Вас указаны лишние аргументы в методе `AddForce`. Вместо этого используйте следующий код:

```csharp
rb.AddForce(-strafeSpeed * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
```

2. Ошибка в строке `rb.AddForce(0, 0, strafeSpeed * Time.deltaTime, 0, 0, ForceMode.VelocityChange);`. Здесь также указаны лишние аргументы. Исправьте ее следующим образом:

```csharp
rb.AddForce(strafeSpeed * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
```

После внесения этих изменений, Ваш код должен выглядеть так:

```csharp
using UnityEngine;

public class PlayerMove : MonoBehaviour
{
public Rigidbody rb;

public float runSpeed = 500f;
public float strafeSpeed = 500f;
public float jumpForce = 15f;

protected bool straleLeft = false;
protected bool straleRight = false;
protected bool doJump = false;


void Update()
{
if (Input.GetKey("a"))
{
straleLeft = true;
}
else
{
straleLeft = false;
}

if (Input.GetKey("d"))
{
straleRight = true;
}
else
{
straleRight = false;
}

if (Input.GetKeyDown("space"))
{
doJump = true;
}
}

void FixedUpdate()
{
// rb.AddForce(runSpeed, 0, 0, * Time.deltaTime);

if (straleLeft)
{
rb.AddForce(-strafeSpeed * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
}

if (straleRight)
{
rb.AddForce(strafeSpeed * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
}
}
}
```

Попробуйте внести эти изменения и проверьте, исправились ли ошибки.
Р П (Zf)
Р П (Zf)
40 871
Лучший ответ
Царь Своей Мечты Всё работает если убрать первую строку с
```csharp
спасибо, помогли
Царь Своей Мечты Вы не правильно поняли, по оси z не идет в принципе, а надо чтобы постоянно шел, без перерыва, а он по этой оси стоит

можем конечно связаться через дискорд, если не против
Царь Своей Мечты фух, работает теперь, спасибо
Царь Своей Мечты Ну и ладно, не грех похвалить
Ошибки CS1501 в вашем коде вызваны методом rb.AddForce(). Этот метод принимает четыре аргумента: вектор силы, относительную скорость, режим и тип применения силы. В вашем коде вы передаете только три аргумента методу rb.AddForce(). Вот почему вы получаете ошибки CS1501.

Вот исправленный код:
 using UnityEngine;  

public class PlayerMove : MonoBehaviour
{
public Rigidbody rb;

public float runSpeed = 500f;
public float strafeSpeed = 500f;
public float jumpForce = 15f;

protected bool straleLeft = false;
protected bool straleRight = false;
protected bool doJump = false;


void Update()
{
if (Input.GetKey("a"))
{
straleLeft = true;
}
else
{
straleLeft = false;
}

if (Input.GetKey("d"))
{
straleRight = true;
}
else
{
straleRight = false;
}

if (Input.GetKeyDown("space"))
{
doJump = true;
}
}

void FixedUpdate()
{
if (straleLeft)
{
rb.AddForce(0, 0, -strafeSpeed * Time.deltaTime, ForceMode.VelocityChange);
}

if (straleRight)
{
rb.AddForce(0, 0, strafeSpeed * Time.deltaTime, ForceMode.VelocityChange);
}

if (doJump)
{
rb.AddForce(0, jumpForce, 0, ForceMode.Impulse);
doJump = false;
}
}
}
Нина Кустова
Нина Кустова
25 860
Царь Своей Мечты остается та же ошибка
1. Ты задал переменные `straleLeft`, `straleRight` и `doJump` как `protected`, но зачем?Ты боишься, что ктото другой будет использовать их? Ну, у меня есть новость для тебя, никто не хочет использовать твой ужасный код. 2. В функции `Update()` ты проверяешь, нажата ли клавиша "a" или "d", и затем задаешь значения `straleLeft` и `straleRight` соответственно. Но ты можешь сделать это намного проще, используя тернарный оператор. Но, конечно, ты предпочитаешь усложнять свою жизнь.
3. В функции `FixedUpdate()` у тебя есть два условия, которые добавляют силу к Rigidbody в зависимости от значений `straleLeft` и `straleRight`. Но почему ты используешь `AddForce()` с шестью аргументами? Ты даже не знаешь, как правильно использовать эту функцию. Ты просто копируешь код из интернета, не задумываясь о его смысле.
В общем, твой код - полный отстой. Ты даже не заслуживаешь помощи. Иди и изучай основы программирования, прежде чем пытаться писать что-то самостоятельно. Ты просто тратишь свое и мое время.
NR
Nurlan R.
14 368