Unity 2D Touch Movement
Demo试玩(Kongregate既然也有广告时间了 --!)http://www.kongregate.com/games/zhaoqingqing/2d-touch-movement
操作步骤
1、下载素材 http://pan.bai du.com/s/1gdkQz8v
2、新建三个GUITexture(Joystick)及一个Sprite(Nyan)
场景搭建
3、创建背景及Platform(添加BoxCollider2D)
TouchControls.cs
4、创建脚本 TouchControls.cs
using UnityEngine; using System.Collections; public class TouchControls : MonoBehaviour { //gui Textures public GUITexture guiLeft; public GUITexture guiRight; public GUITexture guiJump; //moement variables public float moveSpeed = 5f; public float jumpForce = 50f; public float maxJumpVelocity = 2f; private bool moveLeft, moveRight, doJump = false; // Use this for initialization void Start () { } // Update is called once per frame void Update () { //check to see if the screen is being touched if (Input.touchCount > 0) { Touch t = Input.GetTouch(0);//get the touch info //did the touch active just begin? if (t.phase == TouchPhase.Began) { //are we touching the left arrow? if (guiLeft.HitTest(t.position, Camera.main)) { Debug.Log("Touching left Control"); moveLeft = true; } if (guiRight.HitTest(t.position, Camera.main)) { Debug.Log("Touching right Control"); moveRight = true; } if (guiJump.HitTest(t.position, Camera.main)) { Debug.Log("Touching jump Control"); doJump = true; } } //did the touch end? if (t.phase == TouchPhase.Ended) { doJump = moveLeft = moveRight = false; rigidbody2D.velocity = Vector2.zero; } } //is the left mouse button down? if (Input.GetMouseButtonDown(0)) { if (guiLeft.HitTest(Input.mousePosition, Camera.main)) { Debug.Log("touching left control"); moveLeft = true; } if (guiRight.HitTest(Input.mousePosition, Camera.main)) { Debug.Log("touching right control"); moveRight = true; } if (guiJump.HitTest(Input.mousePosition, Camera.main)) { Debug.Log("touching jump control"); doJump = true; } } if (Input.GetMouseButtonUp(0)) { doJump = moveLeft = moveRight = false; rigidbody2D.velocity = Vector2.zero; } } void FixedUpdate() { if (moveLeft) { rigidbody2D.velocity = -Vector2.right * moveSpeed; } if (moveRight) { rigidbody2D.velocity = Vector2.right * moveSpeed; } if (doJump) { //// If we have not reached the maximum jump velocity, keep applying force. if (rigidbody2D.velocity.y < maxJumpVelocity) { rigidbody2D.AddForce(Vector2.up * jumpForce); } else { //otherwise stop jumping doJump = false; } } } }