Freezing GameObject in place using collider trigger?
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);
}
}
Answer by exzizt · Mar 14, 2018 at 10:02 PM
Set a flag like "canMove" to false in your "way point" script. Only use/move the fish in your way point script if "canMove" is true.
Your answer
Follow this Question
Related Questions
Prefab clone to target 1 Answer
Basic question about Unity functionality 0 Answers
Raycast hit not detection gameobject? 0 Answers
How do I make it so if a raycast hits an object with a certain tag it will instantiate an effect? 0 Answers
How do I stop two NPCs from walking into each other and being unable to move? 0 Answers