Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
4 captures
13 Jun 22 - 14 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
0
Question by vituba2202 · Jan 27 at 01:15 AM · uiinputmobilekeyboard inputporting

How could I transform keyboard input into touch input?

Hello! I'm making a racing game and I wanted to port it over to mobile, but I'm having a lot of trouble trying to figure out the best way to do it. Initially, I thought that simulating a keypress with a UI button would work well but thanks to the help of @Hellium I'm now trying to figure out another way to port this game over. Here is the current code for the BaseInput: using UnityEngine; namespace KartGame.KartSystems { public struct InputData { public bool Accelerate; public bool Brake; public float TurnInput; }

      public interface IInput
      {
          InputData GenerateInput();
      }
  
      public abstract class BaseInput : MonoBehaviour, IInput
      {
          /// <summary>
          /// Override this function to generate an XY input that can be used to steer and control the car.
          /// </summary>
          public abstract InputData GenerateInput();
      }
  }

And here is the keyboard input script, these "horizontal", "accelerate" and "brake" buttons are all referencing to Unity's input manager, as you can see in the image attached!

Unity's input manager, referencing the Horizontal movement (left and right) in the standard WASD configuration

 using UnityEngine;
 
     namespace KartGame.KartSystems {
     
         public class KeyboardInput : BaseInput
     
         {
             public string TurnInputName = "Horizontal";
             public string AccelerateButtonName = "Accelerate";
             public string BrakeButtonName = "Brake";
     
             public override InputData GenerateInput() {
                 return new InputData
                 {
                     Accelerate = Input.GetButton(AccelerateButtonName),
                     Brake = Input.GetButton(BrakeButtonName),
                     TurnInput = Input.GetAxis("Horizontal")
                 };
             }
         }
     }


What would be the best way to change this keyboard input method to a mobile-compatible one? Ideally, I would like a joystick for movement but left and right buttons would also be fine. Thanks again @Hellium for the help with the previous incorrect question that I've made!

example.png (71.4 kB)
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
2
Best Answer

Answer by Hellium · Jan 27 at 09:06 AM

The solution I suggested in the other question works perfectly fine

UiInput.cs

To be attached to an empty gameObject

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class UiInput : BaseInput
 {
     private bool accelerate;
     private bool brake;
     private float turn;
 
     // Called by OnPointerDown event from Even Trigger attached to UI object
     // https://youtu.be/3NBYqPAA5Es?t=194
     public void StartAccelerate() => accelerate = true;
 
     // Called by OnPointerUp event from Even Trigger attached to UI object
     // https://youtu.be/3NBYqPAA5Es?t=194
     public void StopAccelerate() => accelerate = false;
 
     public void StartBrake() => brake = true;
     public void StopBrake() => brake = false;
 
     public void StartTurnLeft() => turn = Mathf.Max(turn - 1, -1);
     public void StopTurnLeft() => turn = Mathf.Min(turn + 1, 1);
 
     public void StartTurnRight() => turn = Mathf.Min(turn + 1, 1);
     public void StopTurnRight() => turn = Mathf.Max(turn - 1, -1);
 
     public override InputData GenerateInput()
     {
         return new InputData
         {
             Accelerate = accelerate,
             Brake = brake,
             TurnInput = turn
         };
     }
 }

Then, for every UI button, attach an event trigger and provide the appropriate function

Example for the accelerate button:

alt text


uiinput.png (18.3 kB)
Comment
Add comment · Show 11 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image vituba2202 · Jan 27 at 02:51 PM 0
Share

What do I do about this errors? error messages

example.png (27.1 kB)
avatar image Hellium vituba2202 · Jan 27 at 03:30 PM 0
Share

Put the class in the KartGame.KartSystems namespace

avatar image vituba2202 Hellium · Jan 27 at 05:49 PM 0
Share

I've done everything exactly as you specified and it is still not working, the buttons aren't doing anything when pressed, what am I doing wrong? What information could I provide you to help you troubleshoot this?

Show more comments

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

325 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

New Input System - On-screen stick only recieves initial input 0 Answers

CrossPlatformInput Detect Multiple Input Headache 1 Answer

Porting to mobile how to assign input manager axes to GUIButtons. 0 Answers

Have a UI Button do what my Input.GetButtonDown("Use") does? 0 Answers

Problems with touch input. 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges