NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта IsGroundC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта IsGround

Сообщение Anonymous »

Я новичок в программировании, читаю книгу по Unity C#, а сейчас пишу код, позволяющий моему персонажу прыгать. Я столкнулся с этой проблемой, хотя следовал книге и не понимаю, как ее решить.

NullReferenceException: ссылка на объект не установлена ​​на экземпляр object
PlayerBehaviour.IsGrounded() (в Assets/scripts/PlayerBehaviour.cs:63)
PlayerBehaviour.FixedUpdate() (в Assets/scripts/PlayerBehaviour.cs:45)

Вот код.

Код: Выделить всё

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerBehaviour : MonoBehaviour
{

public float moveSpeed = 10f;
public float rotateSpeed = 75f;
public float jumpVelocity = 5f;
public float distanceToGround = 0.1f;
public LayerMask groundLayer;

private float vInput;
private float hInput;
// 1
private Rigidbody _rb;
private CapsuleCollider _col;
void start()
{
_rb = GetComponent();
_col = GetComponent();

}
// 2
void Start()
{
// 3
_rb = GetComponent();
}
void Update()
{
vInput = Input.GetAxis("Vertical") * moveSpeed;
hInput = Input.GetAxis("Horizontal") * rotateSpeed;
/* 4
this.transform.Translate(Vector3.forward * vInput *
Time.deltaTime);
this.transform.Rotate(Vector3.up * hInput *
Time.deltaTime);
*/
}

void FixedUpdate()
{
if (IsGrounded() && Input.GetKeyDown(KeyCode.Space))
{
_rb.AddForce(Vector3.up * jumpVelocity, ForceMode.Impulse);
}
// 2
Vector3 rotation = Vector3.up * hInput;
// 3
Quaternion angleRot = Quaternion.Euler(rotation *
Time.fixedDeltaTime);
// 4
_rb.MovePosition(this.transform.position + this.transform.forward * vInput * Time.fixedDeltaTime);

// 5
_rb.MoveRotation(_rb.rotation * angleRot);

}
private bool IsGrounded()
{
Vector3 capsuleBottom = new Vector3(_col.bounds.center.x,
_col.bounds.min.y, _col.bounds.center.z);

// 8
bool grounded = Physics.CheckCapsule(_col.bounds.center, capsuleBottom, distanceToGround, groundLayer,
QueryTriggerInteraction.Ignore);

// 9
return grounded;
}

}
Я уже переместил код в разные места и загрузил C#-скрипт в игровой объект.

Подробнее здесь: https://stackoverflow.com/questions/789 ... object-isg
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»