Post by ara on Jun 26, 2020 11:37:52 GMT
Trying to make it so that the locomotion settings (mostly sprinting) change when you enter a certain area of the game.
Wrote this class, to switch the settings one way onTriggerEnter and then another onTriggerExit.
It compiles and runs fine, but doesn't result in the actual game play settings changing. What am I doing wrong.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChangeGamePlaySettingsOnTrigger : MonoBehaviour
{
[SerializeField] GamePlaySetting onTriggerEnterGamePlaySetting, onTriggerExitGamePlaySetting;
[SerializeField] string tagToTriggerOn = "Player";
private Invector.vCharacterController.vShooterMeleeInput myPlayer;
private Invector.vCharacterController.vThirdPersonAnimator myAnimator;
private Invector.vCharacterController.vThirdPersonMotor myMotor;
public void OnTriggerEnter(Collider other)
{
if (other.tag == tagToTriggerOn)
{
gamePlaySettingsSetter(onTriggerEnterGamePlaySetting);
}
}
public void OnTriggerExit(Collider other)
{
if (other.tag == tagToTriggerOn)
{
gamePlaySettingsSetter(onTriggerExitGamePlaySetting);
}
}
public void referenceInitializer()
{
myPlayer = FindObjectOfType<Invector.vCharacterController.vShooterMeleeInput>();
myAnimator = myPlayer.GetComponent<Invector.vCharacterController.vThirdPersonAnimator>();
myMotor = myPlayer.GetComponent<Invector.vCharacterController.vThirdPersonMotor>();
//myAnimator = FindObjectOfType<Invector.vCharacterController.vThirdPersonAnimator>();
//myMotor = FindObjectOfType<Invector.vCharacterController.vThirdPersonMotor>();
}
public void gamePlaySettingsSetter(GamePlaySetting setTo)
{
referenceInitializer();
myAnimator.SetAnimatorMoveSpeed(setTo.locomotionSettings); // I think this is where I am doing something wrong
myMotor.SetControllerMoveSpeed(setTo.locomotionSettings);
Debug.Log("Setting Movement to:" + setTo.name);
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "GamePlaySetting", menuName = "GamePlaySetting", order = 51)]
public class GamePlaySetting : ScriptableObject
{
[SerializeField] public Invector.vCharacterController.vThirdPersonMotor.vMovementSpeed locomotionSettings;
}
Wrote this class, to switch the settings one way onTriggerEnter and then another onTriggerExit.
It compiles and runs fine, but doesn't result in the actual game play settings changing. What am I doing wrong.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChangeGamePlaySettingsOnTrigger : MonoBehaviour
{
[SerializeField] GamePlaySetting onTriggerEnterGamePlaySetting, onTriggerExitGamePlaySetting;
[SerializeField] string tagToTriggerOn = "Player";
private Invector.vCharacterController.vShooterMeleeInput myPlayer;
private Invector.vCharacterController.vThirdPersonAnimator myAnimator;
private Invector.vCharacterController.vThirdPersonMotor myMotor;
public void OnTriggerEnter(Collider other)
{
if (other.tag == tagToTriggerOn)
{
gamePlaySettingsSetter(onTriggerEnterGamePlaySetting);
}
}
public void OnTriggerExit(Collider other)
{
if (other.tag == tagToTriggerOn)
{
gamePlaySettingsSetter(onTriggerExitGamePlaySetting);
}
}
public void referenceInitializer()
{
myPlayer = FindObjectOfType<Invector.vCharacterController.vShooterMeleeInput>();
myAnimator = myPlayer.GetComponent<Invector.vCharacterController.vThirdPersonAnimator>();
myMotor = myPlayer.GetComponent<Invector.vCharacterController.vThirdPersonMotor>();
//myAnimator = FindObjectOfType<Invector.vCharacterController.vThirdPersonAnimator>();
//myMotor = FindObjectOfType<Invector.vCharacterController.vThirdPersonMotor>();
}
public void gamePlaySettingsSetter(GamePlaySetting setTo)
{
referenceInitializer();
myAnimator.SetAnimatorMoveSpeed(setTo.locomotionSettings); // I think this is where I am doing something wrong
myMotor.SetControllerMoveSpeed(setTo.locomotionSettings);
Debug.Log("Setting Movement to:" + setTo.name);
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "GamePlaySetting", menuName = "GamePlaySetting", order = 51)]
public class GamePlaySetting : ScriptableObject
{
[SerializeField] public Invector.vCharacterController.vThirdPersonMotor.vMovementSpeed locomotionSettings;
}