让玩家通过触摸屏控制跳转

时间:2014-11-07 11:42:40

标签: c# unity3d

您好,感谢您阅读本文。

我有两个对象:一个玩家对象和一个JumpButton对象。

玩家对象是玩家。 OFC。 JumpButton对象是一个对象,当你使用触摸屏设备即Android手机时,我想让玩家跳转。

这是我的JumpButton脚本:使用UnityEngine;使用System.Collections;

using UnityEngine;
using System.Collections;

public class JumpButtonScript : MonoBehaviour {
public GameObject player;
public GameObject JumpButton;

// Use this for initialization
void Start () {
    player = GameObject.Find ("player");
}

// Update is called once per frame
void Update () {
    if ((Input.touchCount == 1) && (Input.GetTouch(0).phase == TouchPhase.Began)) 
    {

    }
  }
}

这是允许我用箭头键控制播放器的脚本。

using UnityEngine;
using System.Collections;

public class RobotController : MonoBehaviour {
//This will be our maximum speed as we will always be multiplying by 1
public float maxSpeed = 2f;
public GameObject player;
public GameObject sprite;
//a boolean value to represent whether we are facing left or not
bool facingLeft = true;
//a value to represent our Animator
Animator anim;
//to check ground and to have a jumpforce we can change in the editor
bool grounded = true;
public Transform groundCheck;
public float groundRadius = 1f;
public LayerMask whatIsGround;
public float jumpForce = 300f;
private bool isOnGround = false;
void OnCollisionEnter2D(Collision2D collision) {
        isOnGround = true;  
    }

void OnCollisionExit2D(Collision2D collision) {
    anim.SetBool ("Ground", grounded);

    anim.SetFloat ("vSpeed", rigidbody2D.velocity.y);
    isOnGround = false;
}

// Use this for initialization
void Start () {

    player = GameObject.Find("player");

    //set anim to our animator
    anim = GetComponent <Animator>();
}


void FixedUpdate () {
    //set our vSpeed
    //set our grounded bool

    grounded = Physics2D.OverlapCircle (groundCheck.position, groundRadius, whatIsGround);
    //set ground in our Animator to match grounded
    anim.SetBool ("Ground", grounded);

    float move = Input.GetAxis ("Horizontal");//Gives us of one if we are moving via the arrow keys
    //move our Players rigidbody
    rigidbody2D.velocity = new Vector3 (move * maxSpeed, rigidbody2D.velocity.y);   
    //set our speed
    anim.SetFloat ("Speed",Mathf.Abs (move));
    //if we are moving left but not facing left flip, and vice versa
    if (move > 0 && !facingLeft) {

        Flip ();
    } else if (move < 0 && facingLeft) {
        Flip ();
    }

}

void Update(){
    if ((isOnGround == true && Input.GetKeyDown (KeyCode.UpArrow)) || (isOnGround == true && Input.GetKeyDown (KeyCode.Space))) {
        anim.SetBool("Ground",false);
        rigidbody2D.AddForce (new Vector2 (0, jumpForce));
    }

    if (isOnGround == true && Input.GetKeyDown (KeyCode.DownArrow)) 
    {
        gameObject.transform.localScale = new Vector3(transform.localScale.x, 0.2f, 0.2f);
    }
    if (isOnGround == true && Input.GetKeyUp (KeyCode.DownArrow)) 
    {
        gameObject.transform.localScale = new Vector3(transform.localScale.x, 0.3f, 0.3f);
    }
}



//flip if needed
void Flip(){
    facingLeft = !facingLeft;
    Vector3 theScale = transform.localScale;
    theScale.x *= -1;
    transform.localScale = theScale;
}
}

正如你所看到的那样,我设法让玩家按箭头键移动,但是当我按下跳转按钮(触摸屏按键)时,如何在Android手机上跳转?

我真的希望你能帮助我。

1 个答案:

答案 0 :(得分:0)

如果您的问题是如何处理输入,请尝试使用此代码,我们将在屏幕上制作从相机到鼠标的光线并检查标签以查看我们的内容

public class handleInput: MonoBehaviour {

    void Update () {
        if (Input.GetMouseButtonDown (0)) {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit)) {
                if (hit.collider.tag=="jumpbutton"){
                    jump();
                }      
            }
        }
    }
}

对于跳跃部分,你可以做到这一点,给玩家增加一个力量让他上去,重力应该把他拉下来

if (grounded == true)
    {
        rigidbody.AddForce(Vector3.up* jumpSpeed);

        grounded = false;
    }