Доступ к сценарию FirstPersonController из другого источника для изменения значений не работает - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь создать систему выносливости для прототипа игры, которую я делаю, и, завершив ее, я не вижу причин, почему она не должна работать, однако это не так. Я подозреваю, что он на самом деле не обращается к скрипту и не получает компоненты, когда я к нему обращаюсь, отсюда и название. Я не буду включать в себя код сценария FPS, он стандартный от единицы и, насколько я могу судить, здесь не нужен. Дай мне знать иначе. Ниже приведен код, с которым, как я думал, должна быть работающая система Stamina. Любая помощь приветствуется.

РЕДАКТИРОВАТЬ: помечены как решенные, ничего плохого, кроме меня, проблема была опечатка

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityStandardAssets.Characters.FirstPerson;

public class PlayerVitals : MonoBehaviour
{

private float vital = 0;

public Slider healthSlider;
public int maxHealth;
public int healthFallRate;

public Slider thirstSlider;
public int maxThirst;
public int thirstFallRate;

public Slider staminaSlider;
public int maxStamina;
private int staminaFallRate;
public int staminaFallMult;
private int staminaRegainRate;
public int staminaRegainMult;

private CharacterController charController;
private FirstPersonController playerController;



public DeathMenu deathMenu;
public GameObject FPSController;
public Camera Meep;

void Sart()
{
    //sets max value of slider to whatever we set as the max health, thirst etc
    healthSlider.maxValue = maxHealth;
    healthSlider.value = maxHealth;

    thirstSlider.maxValue = maxThirst;
    thirstSlider.value = maxThirst;

    staminaSlider.maxValue = maxStamina;
    staminaSlider.value = maxStamina;

    staminaFallRate = 1;
    staminaRegainRate = 1;


    // call them here in the script so we dont need to write it out everytime
    charController = GetComponent<CharacterController>();
    playerController = GetComponent<FirstPersonController>();


    Meep.enabled = false;
}
void Update()
{
    //health fall
    if (thirstSlider.value <= 0)
    {
        healthSlider.value -= Time.deltaTime / healthFallRate * 2;

    }

    if (healthSlider.value <=0)
    {
        CharacterDeath();
    }




    //Thirst
    if (thirstSlider.value >= 0)
    {
        thirstSlider.value -= Time.deltaTime / thirstFallRate;
    }

    else if (thirstSlider.value <= 0)
    {
        thirstSlider.value = 0;
    }

    else if (thirstSlider.value >= maxThirst)
    {
        thirstSlider.value = maxThirst;
    }

    //stamina

    if(charController.velocity.magnitude > 0 && Input.GetKey(KeyCode.LeftShift))
    {
        staminaSlider.value -= Time.deltaTime / staminaFallRate * staminaFallMult;
    }
    else
    {
        staminaSlider.value += Time.deltaTime / staminaRegainRate * staminaRegainMult;
    }

    if (staminaSlider.value >= maxStamina)
    {
        staminaSlider.value = maxStamina;
    }
    else if (staminaSlider.value <= 0) { //if the stamina ever reaches zero, we want the run speed to equal the walk speed
        staminaSlider.value = 0;
        playerController.m_RunSpeed = playerController.m_WalkSpeed;
    }


    //currently can only walk, even after regen, below fixes that, ever above zero, we want it to be our new normal runspeed
    else if (staminaSlider.value >= 0)
    {
        playerController.m_RunSpeed = playerController.m_RunSpeedNorm;
    }
}

void CharacterDeath()
{
    // DIE DIE DIE - Reaper main 2028
   deathMenu.ToggleEndMenu (vital);
   FPSController.SetActive(false);
   Meep.enabled = true;
   Cursor.lockState = CursorLockMode.None;

}

}

1 Ответ

0 голосов
/ 02 ноября 2018

Вы набрали void Sart() вместо Start()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...