Noob100 Ответов: 2

Как мне решить эту проблему? Я новичок в кодировании и не знаю языка Си#


Моя проблема в том, что он дает мне эту ошибку:
Assets\Collision.cs(11,28): error CS0029: Cannot implicitly convert type 'bool' to 'PlayerMovement`




Here is my code: 




<pre>using UnityEngine;

public class Collision : MonoBehaviour
{
    public PlayerMovement playerMovement;
    void OnCollisionEnter(Collision collisionInfo)
    {
        if (GetComponent<collider>().tag == "Ded")
        {
          playerMovement = false;
        }

    }






Thank you!

What I have tried:

Im following Brackeys tutorial.

2 Ответов

Рейтинг:
2

Richard MacCutchan

Переменная playerMovement является объектом типа PlayerMovement что, по-видимому, не так просто. bool введите, так что вы не можете установить его на a bool ценность. Если это не имеет смысла, то я предлагаю вам взять книгу по C# и начать учиться.


Рейтинг:
1

OriginalGriff

Здесь есть ряд проблем, одну из которых описал Ричард.

В сообщении об ошибке говорится, что он не может преобразовать значение bool - false - ля PlayerMovement, так что вы не можете назначить false к переменной playerMovement - точно так же, как вы не можете положить автомобиль в кофейную чашку: они не связаны между собой и просто не подходят друг другу!

Вероятно, то, что вы хотели сделать, было установить свойство PlayerMovement класс к ложному:

playerMovement.MyBoolProperty = false;

Но в данном конкретном случае это даст вам еще одну ошибку - а null reference исключение во время выполнения, поскольку вы не присваиваете никакого значения playerMovement переменная, все, что вы делаете, это объявляете ее:
public PlayerMovement playerMovement;
Где - то в вашем коде для этого класса вам нужно создать экземпляр PlayerMovement класс с помощью new ключевое слово и присвоить его переменной. Самый простой способ выглядит так:
public PlayerMovement playerMovement = new PlayerMovement();
.