GetAxis Is Too Fast!How can i make it slower?
Hello Unity3D.I have a problem with my GetAxis.The problem is I want my GetAxis to act as a button and when i move my joystick to left or right its really quick and it makes my character looks like it shuttering.I don't want that.What i want is for the character to move 1 pace or take one step depending if i move the joystick to the left or right.If anyone knows how i can do this.Can you please tell me how?
Heres what i got so far var Characters : GameObject[]; // Array of Weapons var selection : int = 0; var OkButtonP1 : String = "Accept_P1"; var OkButtonP2 : String = "Accept_P2"; var Player1Ready : boolean = false; var Player2Ready : boolean = false; var playerMovement : float = 0; var smooth : float =0; var speed : float =0; var amount : float =0; var gravity : float = 0; function Start () {
for(var obj:GameObject in Characters)
{
obj.SetActive(false);
Characters[selection].SetActive(true);
}
}
function Update (){
if (Input.GetAxis("Horizontal1"))
{
transform.localPosition.x += playerMovement * smooth * speed * gravity * Input.GetAxisRaw("Horizontal1");
}
if (Input.GetAxis("Depth1"))
{
transform.localPosition.z += playerMovement * Input.GetAxis("Depth1") * Time.deltaTime;
}
if(Input.GetKeyDown("a")||Input.GetAxisRaw("Horizontal2") == 1){
{
Characters[selection].SetActive (false);
selection++;
if (selection >= Characters.length)
selection = 0;
Characters[selection].SetActive (true);
}
}
if(Input.GetKeyDown("d")||Input.GetAxisRaw("Horizontal2") == -1){
Characters[selection].SetActive(false);
selection--;
if (selection < 0)
selection = Characters.length-1;
Characters[selection].SetActive (true);
}
if (Input.GetButtonDown(OkButtonP1)&& Player1Ready == false) {
Player1Ready = true;
}
if (Input.GetButtonDown(OkButtonP2)&& Player2Ready == false) {
Player2Ready = true;
}
if (Input.GetButtonDown(OkButtonP1)&&(Player1Ready == true && Player2Ready == true))
{
PlayerPrefs.SetInt ("PreferedModel",selection);{
PlayerPrefs.SetInt ("PreferedModel2",selection);{
Application.LoadLevel("God N Angels Waterfall Shore");
}
}
}
}
Answer by Lewance · Jan 12, 2016 at 01:12 AM
short code for getting something to only update every now and again - using dummy variables/functions for storing the direction, checking the direction and moving in it
public float stepTime;
private float nextStep;
void Update()
{
if (Time.time > nextStep)
{
nextStep = Time.time + stepTime;
direction = CheckTheControlsForDirection();
}
moveInDirection(direction);
}
Answer by IKilledKenny_2 · Jan 12, 2016 at 08:12 AM
I Love You! Thank you i have been stuck on this for days =D
Your answer
Follow this Question
Related Questions
Detect player movement 0 Answers
Set Bool to false after seconds? 2 Answers
Animation Issues - Won't play OnTriggerExit 0 Answers
How to pick up an object in hand e.g. a bat C# 0 Answers
player goes through the terrain and don't fall of of it 0 Answers