Попробуй это. Три переменные (leftBtn, rightBtn и jump) будут сработать соответственно:
- если коснуться правой нижней части экрана, rightBtn = true
- если коснуться нижней левой части экрана, leftBtn = true
- если коснуться верхней части экрана в любом месте, переход = true
-
bool leftBtn = false;
bool rightBtn = false;
bool jump = false;
void Update()
{
leftBtn = false;
rightBtn = false;
jump = false;
if(Input.touches.Length > 0){
Touch touch = Input.touches [0];
if (touch.position.y > Screen.height / 2) {
jump = true;
} else {
if (touch.position.x > Screen.width / 2) {
rightBtn = true;
} else {
leftBtn = true;
}
}
}
//put the rest Of your code here \/
}
Так что я думаю, что это будет выглядеть в вашем коде (но я могу ошибаться и ошибаться):
bool leftBtn = false;
bool rightBtn = false;
bool jump = false;
void Start()
{
myRigidbody = GetComponent<Rigidbody2D>();
myAnim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
leftBtn = false;
rightBtn = false;
jump = false;
if(Input.touches.Length > 0){
Touch touch = Input.touches [0];
if (touch.position.y > Screen.height / 2) {
jump = true;
} else {
if (touch.position.x > Screen.width / 2) {
rightBtn = true;
} else {
leftBtn = true;
}
}
}
isGrounded = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, whatIsGround);
if (rightBtn)
{
myRigidbody.velocity = new Vector3(moveSpeed,
myRigidbody.velocity.y, 0);
}
else if (leftBtn)
{
myRigidbody.velocity = new Vector3(-moveSpeed,
myRigidbody.velocity.y, 0f);
}
else
{
myRigidbody.velocity = new Vector3(0f, myRigidbody.velocity.y,0f);
}
if (jump && isGrounded)
{
myRigidbody.velocity = new Vector3(myRigidbody.velocity.x, jumpSpeed, 0f);
}
myAnim.SetFloat("Speed", Mathf.Abs(myRigidbody.velocity.x));
myAnim.SetBool("Grounded", isGrounded);
}
Если вы хотите, вы можете поэкспериментировать с Screen.width / 2 и Screen.height / 2, чтобы получить различные области экрана, запускающие различные функции.