Question by
Ninjix3 · Mar 14, 2018 at 04:54 AM ·
gameobjectraycastingienumeratorspherecollider
Pause a Game Object using Raycast and Sphere Collider?
I'm making a fishing game using Raycast and I want to know how can I pause my fish GameObject once a Sphere collider called Float comes in contact with the Fish Sphere collider.
public class Casting : MonoBehaviour {
public ParticleSystem Splash;
public float offsetSplash;
public GameObject Float;
public GameObject Item;
public GameObject Enemy;
public Transform target;
public Transform targetItem;
public Transform targetEnemy;
public int scoreValue = 10;
int waterMask;
public float maxCastDist = 1000f;
public float fishDist = 1f;
//public float itemDist = 1f;
//public float enemyDist = 1f;
public bool hitObject;
public string achievmentName;
void Awake ()
{
waterMask = LayerMask.GetMask ("Water"); // will only cast in water
}
void Update ()
{
//if (Input.GetMouseButtonDown (0)) {
if (EventSystem.current.IsPointerOverGameObject ()) {
return;
} else {
if (Input.GetMouseButtonDown (0)) {
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
Vector3 splashOffset = Input.mousePosition;
splashOffset.y = Input.mousePosition.y + offsetSplash;
Ray offset = Camera.main.ScreenPointToRay (splashOffset);
if (Physics.Raycast (offset, out hit, maxCastDist, waterMask)) {
if (hit.collider != null) {
if (Splash != null) {
ParticleSystem splash = Instantiate (Splash, hit.point, Quaternion.identity) as ParticleSystem;
splash.Play ();
}
}
}
if (Physics.Raycast (ray, out hit, maxCastDist, waterMask))
if (hit.collider != null) {
float dist = Vector3.Distance (hit.point, target.position);
Debug.Log (dist);
Instantiate (Float, hit.point, Quaternion.identity);
if (dist < fishDist) {
StartCoroutine (fishWaiter ()); // delay random when fish will be "retrieved"
}
}
}
}
}
IEnumerator fishWaiter ()
{
int waitFishtime = Random.Range (1, 10);
Debug.Log ("Timer Started");
yield return new WaitForSeconds (waitFishtime);
print ("I waited" + waitFishtime + "Sec");
Destroy (GameObject.FindWithTag ("Fish"));
print ("You Caught The Fish!");
ScoreManager.score += scoreValue;
AchievementManager.Instance.EarnAchievment (achievmentName);
}
}
Comment
Your answer