- Home /
Sensitivity Slider
This is really frustrating! I have been working on this for a week and have not been able to make it work. I am trying to make a sensitivity slider so the player can adjust how quickly the character moves. I made a slider and speed variable (that is attached to my player script). The slider moves like it should and the handle value saves, but the speed remains the same. I cannot get the sensitivity to change. I know I am close, but I can't figure out what I need to add or what I could be doing wrong.
Debug is not showing any errors!
Here's my code:
Code 1:
using UnityEngine;
using System.Collections;
using UnityEngine .Audio ;
using UnityEngine .SceneManagement ;
public class Player : MonoBehaviour {
public float speed;
void Update(){
//speed = PlayerPrefs.GetFloat ("CurSens");
if (!PausePanel.isPaused && Input.touchCount > 0 && Input.GetTouch (0).phase == TouchPhase.Moved) {
Vector2 touchDeltaPosition = Input.GetTouch (0).deltaPosition;
transform.Translate (touchDeltaPosition.x * speed, touchDeltaPosition.y * speed, 0);
}
if(!PausePanel.isPaused && mySpriteRenderer != null)
{
if(Input.GetTouch (0).deltaPosition .x<0)
{
// flip the sprite
mySpriteRenderer.flipX = true;
}
if(Input.GetTouch (0).deltaPosition.x >0)
{
// flip the sprite
mySpriteRenderer.flipX = false;
}
}
Code 2:
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class PausePanel : MonoBehaviour {
public Slider sensitivitySlider;
void Start(){
if (sensitivitySlider) {
instance.speed = PlayerPrefs.GetFloat ("CurSens");
sensitivitySlider.value = instance.speed;
}
instance = GameObject.Find("Biting Tyson Head").GetComponent <Player> ();
}
public void SensitivityControl (float sensitivityControl){
instance.speed = sensitivityControl;
PlayerPrefs.SetFloat ("CurSens", instance.speed);
}
I don't see you modifying the speed or the curSens after the Start, on the only update function there, you first move the player, and then flip the x or not, you don't change the speed anywhere, normally, if your slider is working, just use (yourSlider.value / yourSlider.maxValue) * maximumSpeed to get the actual speed, or if your slider have the good $$anonymous$$ and max values, just yourSlider.value.
You probably already tried this, but that's the only conclusion i get from those scripts
Answer by throh · Jul 03, 2016 at 12:38 PM
Make a static variable at the Player class.
public static float speed;
And then:
public void SensitivityControl (float sensitivityControl){
Player.speed = sensitivityControl;
}
Your answer
Follow this Question
Related Questions
Sensitivity Slider Issue 1 Answer
Sensitivity sliders not working 1 Answer
Slider value saving? 1 Answer