Programação de games

Ia [Peixe bobo] posição randômica usando NavMesh da Unity

06/01/2018 11:30:54
Roberto França Duarte

Hoje estou trabalhando em um novo game, um game de pesca. E tive que construir uma Ia pros peixes.

É algo bem simples, apenas randomizando as posições da malha do NavMesh.

Veja o  código:

using UnityEngine;
using System.Collections;
using UnityEngine.AI;
using System;

namespace GamePlay
{
 public class UnitRandomIa : MonoBehaviour {
 public float wanderRadius = 30;
 public float wanderTimer = 0.8f;
 [SerializeField] private float speed;

 private Transform target;
 private NavMeshAgent agent;
 private Vector3 newPos;
 private bool stir = true;

private void OnEnable()
 {
 agent = GetComponent<NavMeshAgent>();
 agent.speed = speed;
 }

private void Start()
 {
 StopCoroutine(ControllPosition());
 StartCoroutine(ControllPosition());
 }
 
 private void LateUpdate()
 {
 agent.SetDestination(newPos);
 }

// ========== ia peixe bobo =============
 private IEnumerator ControllPosition()
 {
 while (stir)
 {
 SetPositionIa1();
 yield return new WaitForSeconds(wanderTimer);
 SetPositionIa1();
 }
 }

private void SetPositionIa1()
 {
 newPos = RandomNavSphere(transform.position, wanderRadius, -1);
 }

private static Vector3 RandomNavSphere(Vector3 origin, float dist, int layermask)
 {
 Vector3 randDirection = UnityEngine.Random.insideUnitSphere * dist;
 randDirection += origin;
 NavMeshHit navHit;
 NavMesh.SamplePosition(randDirection, out navHit, dist, layermask);
 return navHit.position;
 }
 // ========== ia peixe bobo =============
 }
}

Veja o vídeo para ver como montei...

No jogo, terei de fazer outras diferentes Ias.

Games em desenvolvimento:

Conheça meus games em desenvolvimento! Seu apoio faz a diferença para um desenvolvedor de games Indie Brazuca

Scripts Unity 3D / C#

Aqui você tera uma vasta coleção de scripts Unity 3D / c#...

Portfolio de desenvolvimento de games:

Conheça meus games desenvolvimento! Seu apoio faz a diferença para um desenvolvedor de games Indie Brazuca

Mecânica básica jogo carro 2D Unity

Nesse post, quero mostrar uma mecânica básica de jogo carro 2D na Unity. Basicamente ele vai para frente / trás e rotaciona. Usei o WheelJoint2D para usar a física de molas e motor da Unity: No caso usei 2 WheelJoint2D, um para cada roda, e via script fiz emitir força: using UnityEngine; namespace GamePlay { public class […]