- Home /
Question by
R1incewind · Feb 19, 2017 at 10:48 PM ·
unity 5mobilephysics2dtouch controls
When applying a force to an object on Touch, how do I add a *cooldown* to it?
My first serious attempt at a mobile game.
You have balls that fall and you have to keep them from reaching the bottom for as long as possible by tapping them.
I've come up with this:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class bounceController : MonoBehaviour {
public Rigidbody2D body;
public Camera cam;
void Awake() {
Debug.Log(body.transform.localScale);
if (cam == null) {
cam = Camera.main;
}
}
void FixedUpdate() {
if(Input.touchCount > 0) {
Touch touch = Input.GetTouch(0);
if (IsInBounds(touch.position)) {
Jump();
SidewaysForce();
}
}
}
void SidewaysForce() {
if (Random.Range(0, 2) > 0) {
body.AddForce(new Vector2(0.5f, 0.0f), ForceMode2D.Impulse);
} else {
body.AddForce(new Vector2(-0.5f, 0.0f), ForceMode2D.Impulse);
}
}
void Jump() {
body.AddForce(new Vector2(0f, 1f), ForceMode2D.Impulse);
}
private bool IsInBounds(Vector2 touchPos) {
Vector3 targetTouchPos = cam.ScreenToWorldPoint(new Vector3(touchPos.x, touchPos.y, 0.0f));
if(targetTouchPos.x <= body.position.x + 2f && targetTouchPos.x >= body.position.x - 2f) {
Debug.Log("x is true");
if (targetTouchPos.y <= body.position.y + 2f && targetTouchPos.y >= body.position.y - 2f) {
Debug.Log("all is true");
return true;
}
}
return false;
}
}
Which works except that if I keep my finger on the ball it applies the force a bunch of times very quickly and it goes flying off the screen.
Comment