• 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 /
avatar image
0
Question by olcayakgn · Dec 25, 2014 at 06:51 PM · android

How to use Unity Cross Platform Input?

Hey there, I am kind of beginner. I just downloaded the sample assets 2D pack forom Store. I used the robo boy in this pack his pre-made scripts. But I stuck how to add virtual buttons to this script. Then I attached Mobile Input script in the sample assets pack to the Robo player but no thing happend. Thanks in Advance.

Here is the Platformer Character 2D Script:

 using UnityEngine;
 
 namespace UnitySampleAssets._2D
 {
 
     public class PlatformerCharacter2D : MonoBehaviour
     {
         private bool facingRight = true; // For determining which way the player is currently facing.
 
         [SerializeField] private float maxSpeed = 10f; // The fastest the player can travel in the x axis.
         [SerializeField] private float jumpForce = 400f; // Amount of force added when the player jumps.    
 
         [Range(0, 1)] [SerializeField] private float crouchSpeed = .36f;
                                                      // Amount of maxSpeed applied to crouching movement. 1 = 100%
 
         [SerializeField] private bool airControl = false; // Whether or not a player can steer while jumping;
         [SerializeField] private LayerMask whatIsGround; // A mask determining what is ground to the character
 
         private Transform groundCheck; // A position marking where to check if the player is grounded.
         private float groundedRadius = .2f; // Radius of the overlap circle to determine if grounded
         private bool grounded = false; // Whether or not the player is grounded.
         private Transform ceilingCheck; // A position marking where to check for ceilings
         private float ceilingRadius = .01f; // Radius of the overlap circle to determine if the player can stand up
         private Animator anim; // Reference to the player's animator component.
 
 
         private void Awake()
         {
             // Setting up references.
             groundCheck = transform.Find("GroundCheck");
             ceilingCheck = transform.Find("CeilingCheck");
             anim = GetComponent<Animator>();
         }
 
 
         private void FixedUpdate()
         {
             // The player is grounded if a circlecast to the groundcheck position hits anything designated as ground
             grounded = Physics2D.OverlapCircle(groundCheck.position, groundedRadius, whatIsGround);
             anim.SetBool("Ground", grounded);
 
             // Set the vertical animation
             anim.SetFloat("vSpeed", rigidbody2D.velocity.y);
         }
 
 
         public void Move(float move, bool crouch, bool jump)
         {
 
 
             // If crouching, check to see if the character can stand up
             if (!crouch && anim.GetBool("Crouch"))
             {
                 // If the character has a ceiling preventing them from standing up, keep them crouching
                 if (Physics2D.OverlapCircle(ceilingCheck.position, ceilingRadius, whatIsGround))
                     crouch = true;
             }
 
             // Set whether or not the character is crouching in the animator
             anim.SetBool("Crouch", crouch);
 
             //only control the player if grounded or airControl is turned on
             if (grounded || airControl)
             {
                 // Reduce the speed if crouching by the crouchSpeed multiplier
                 move = (crouch ? move*crouchSpeed : move);
 
                 // The Speed animator parameter is set to the absolute value of the horizontal input.
                 anim.SetFloat("Speed", Mathf.Abs(move));
 
                 // Move the character
                 rigidbody2D.velocity = new Vector2(move*maxSpeed, rigidbody2D.velocity.y);
 
                 // If the input is moving the player right and the player is facing left...
                 if (move > 0 && !facingRight)
                     // ... flip the player.
                     Flip();
                     // Otherwise if the input is moving the player left and the player is facing right...
                 else if (move < 0 && facingRight)
                     // ... flip the player.
                     Flip();
             }
             // If the player should jump...
             if (grounded && jump && anim.GetBool("Ground"))
             {
                 // Add a vertical force to the player.
                 grounded = false;
                 anim.SetBool("Ground", false);
                 rigidbody2D.AddForce(new Vector2(0f, jumpForce));
             }
         }
 
 
         private void Flip()
         {
             // Switch the way the player is labelled as facing.
             facingRight = !facingRight;
 
             // Multiply the player's x local scale by -1.
             Vector3 theScale = transform.localScale;
             theScale.x *= -1;
             transform.localScale = theScale;
         }
     }
 }



Here is the Platformer 2D Control Script:

 using UnityEngine;
 using UnitySampleAssets.CrossPlatformInput;
 
 namespace UnitySampleAssets._2D
 {
 
 
     [RequireComponent(typeof (PlatformerCharacter2D))]
     public class Platformer2DUserControl : MonoBehaviour
     {
 
 
         public Texture2D button1;
         private PlatformerCharacter2D character;
         public bool jump;
 
         void Start() {
 
             guiTexture.texture = button1;
 
         }
         private void Awake()
         {
             character = GetComponent<PlatformerCharacter2D>();
         }
 
         private void Update()
         {
             if(!jump){jump = CrossPlatformInputManager.GetButtonDown("Jump"); 
             }
             
 
                 
                 
         }


And the last one: Mobile Input Script:

 using UnityEngine;
 
 namespace UnitySampleAssets.CrossPlatformInput.PlatformSpecific
 {
     public class nwe : VirtualInput
     {
         private void AddButton(string name)
         {
             // we have not registered this button yet so add it, happens in the constructor
             CrossPlatformInputManager.RegisterVirtualButton(new CrossPlatformInputManager.VirtualButton(name));
         }
         
         
         private void AddAxes(string name)
         {
             // we have not registered this button yet so add it, happens in the constructor
             CrossPlatformInputManager.RegisterVirtualAxis(new CrossPlatformInputManager.VirtualAxis(name));
         }
         
         
         public override float GetAxis(string name, bool raw)
         {
             return virtualAxes.ContainsKey(name) ? virtualAxes[name].GetValue : 0;
         }
         
         
         public override void SetButtonDown(string name)
         {
             if (!virtualButtons.ContainsKey(name))
             {
                 AddButton(name);
             }
             virtualButtons[name].Pressed();
         }
         
         
         public override void SetButtonUp(string name)
         {
             virtualButtons[name].Released();
         }
         
         
         public override void SetAxisPositive(string name)
         {
             if (!virtualAxes.ContainsKey(name))
             {
                 AddAxes(name);
             }
             virtualAxes[name].Update(1f);
         }
         
         
         public override void SetAxisNegative(string name)
         {
             if (!virtualAxes.ContainsKey(name))
             {
                 AddAxes(name);
             }
             virtualAxes[name].Update(-1f);
         }
         
         
         public override void SetAxisZero(string name)
         {
             if (!virtualAxes.ContainsKey(name))
             {
                 AddAxes(name);
             }
             virtualAxes[name].Update(0f);
         }
         
         
         public override void SetAxis(string name, float value)
         {
             if (!virtualAxes.ContainsKey(name))
             {
                 AddAxes(name);
             }
             virtualAxes[name].Update(value);
         }
         
         
         public override bool GetButtonDown(string name)
         {
             if (virtualButtons.ContainsKey(name))
             {
                 return virtualButtons[name].GetButtonDown;
             }
             
             AddButton(name);
             return virtualButtons[name].GetButtonDown;
         }
         
         
         public override bool GetButtonUp(string name)
         {
             if (virtualButtons.ContainsKey(name))
             {
                 return virtualButtons[name].GetButtonUp;
             }
             
             AddButton(name);
             return virtualButtons[name].GetButtonUp;
         }
         
         
         public override bool GetButton(string name)
         {
             if (virtualButtons.ContainsKey(name))
             {
                 return virtualButtons[name].GetButton;
             }
             
             AddButton(name);
             return virtualButtons[name].GetButton;
         }
         
         
         public override Vector3 MousePosition()
         {
             return virtualMousePosition;
         }
     }
 }
 
 



Comment
Add comment · Show 1
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 avi9111 · Jun 21, 2016 at 09:23 PM 0
Share

The standard crossplatfor$$anonymous$$put has well infrastructure, and well document, but at the same time, it means a much more study time for the beginner (e.g. cross platform, input control, camera all are new and complicate), as a programmer for many years, i could see the deep infrastructure and the high study curve.

2 Replies

· Add your reply
  • Sort: 
avatar image
2

Answer by KLN_TBN · Jul 21, 2018 at 12:21 PM

Don't forget using UnityStandardAssets.CrossPlatformInput; at the top of your script and then use the CrossPlatformInputManager class instead of the Input class

Comment
Add comment · 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
0

Answer by anubhav756 · Sep 11, 2015 at 03:05 PM

Hi @olcayakgn

Check this folder:

Assets -> Standard Assets -> CrossPlatformInput -> Prefabs

Hope you get the idea :)

Comment
Add comment · 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

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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

iOS / Android Steering 2 Answers

Could a mobile app have a service application compiled targetting a higher version of .net? 0 Answers

Unity 5 input field unable to store user input 1 Answer

Android Swipe In 3D World 1 Answer

Unity Android and XPeria Play 1 Answer


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