Witam.
Napisałem sobie kod postaci, aby się ruszała. Niestety wywala mi w unity jakiś dziwny błąd o takiej treści:
NullReferenceException: Object reference not set to an instance of an object
ZaawansowanyRuchZolnierza.Update () (at Assets/Skrypty/ZaawansowanyRuchZolnierza.cs:34)
Nie rozumiem oco chodzi w tym wpisie.
Oto kod ruchu:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(CharacterController))]
public class ZaawansowanyRuchZolnierza : MonoBehaviour
{
public float PredkoscObrotu = 200;
public float PredkoscRuchu = 2;
public float PredkoscBiegu = 5;
public float Grawitacja = 20;
private Transform TransformacjaGracza;
private CharacterController Kontroler;
private Vector3 KierunekRuchu = Vector3.zero;
// Use this for initialization
void Start ()
{
TransformacjaGracza = transform;
Kontroler = GetComponent<CharacterController>();
animation.wrapMode = WrapMode.Loop;
animation.CrossFade("Idle1");
}
// Update is called once per frame
void Update ()
{
if(Kontroler.isGrounded)
{
KierunekRuchu = new Vector3(0, 0, Input.GetAxis("RuchPrzodTyl"));
KierunekRuchu = TransformacjaGracza.TransformDirection(KierunekRuchu);
KierunekRuchu = KierunekRuchu * PredkoscRuchu;
if(Input.GetButton("RuchLewoPrawo"))
{
//Debug.Log ("Nareszcie Ruszasz Tylek" + Input.GetAxis("RuchLewoPrawo"));
TransformacjaGracza.Rotate(0, Input.GetAxis("RuchLewoPrawo") * PredkoscObrotu * Time.deltaTime , 0);
}
if(Input.GetButton("RuchPrzodTyl"))
{
Ruch ();
if(Input.GetButton("Bieg"))
{
Bieg ();
KierunekRuchu = KierunekRuchu * PredkoscBiegu;
}
}
else
{
animation.CrossFade("Idle1");
}
}
else
{
KierunekRuchu.y -= Grawitacja;
}
Kontroler.Move(KierunekRuchu * Time.deltaTime);
}
public void Ruch()
{
animation.CrossFade("WalkForward");
animation["WalkForward"].speed = 1.3f;
}
public void Bieg()
{
animation.CrossFade("RunForward");
animation["RunForward"].speed = 2.5f;
}
}