I have a script where I want to capture a fish but while having it wait a certain amount of seconds the prefab keeps moving using another script called way points. how can I stop the prefab in place? I tried
fishdist = 0; in Update but that doesn’t seem to work. Thank you so much
using UnityEngine.EventSystems;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
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) {
// stop fish in place
//fishdist = 0;
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);
}
}