void Update() { if (transform.position.y < 0 || !TerrainScript.isInsidePlane(transform.position)) { explode(); } }
void RecalculateTargetPosition() { do { targetPosition = transform.position + Random.insideUnitSphere * wanderRadius; targetPosition.y = 0.5f; } while (!TerrainScript.isInsidePlane(targetPosition)); }
protected void MoveTowardsWithoutRotate(Vector3 direction) { Vector3 nextPosition = direction.normalized * movementSpeed * Time.deltaTime; if (TerrainScript.isInsidePlane(transform.position + nextPosition)) { transform.position += nextPosition; } }
void RecalculateTargetPosition() { do { targetPosition = transform.position + UnityEngine.Random.insideUnitSphere * wanderRadius; targetPosition.y = 0.5f; } while (!TerrainScript.isInsidePlane(targetPosition)); Vector3 direction = targetPosition - transform.position; animator.SetFloat("y", -direction.z); animator.SetFloat("x", direction.x); animator.SetBool("moveHorizontal", Mathf.Abs(direction.x) > Mathf.Abs(direction.z)); }
void SpawnPrefab() { float random = Random.Range(0, totalRate); Vector3 spawnPoint; do { spawnPoint = transform.position + Random.insideUnitSphere * spawnRadius; } while (!TerrainScript.isInsidePlane(spawnPoint)); spawnPoint.y = 0.5f; foreach (PrefabRate generatedPrefab in generatedPrefabs) { random -= generatedPrefab.rate; if (random <= 0) { GameObject.Instantiate(generatedPrefab.prefab, spawnPoint, Quaternion.identity); } } }