-
Notifications
You must be signed in to change notification settings - Fork 68
Description
Is there an existing issue for this?
- I have searched the existing issues
Enter the name of the extension
sgshdgysyfywydyd
Describe the bug of the extension
using UnityEngine;
using System.Collections.Generic;
public class AISurvivalGame : MonoBehaviour
{
// ===== PLAYER SETTINGS =====
public float playerSpeed = 5f;
public int playerHealth = 100;
// ===== AI SETTINGS =====
public Transform aiEnemy;
public float aiSpeed = 3f;
public int aiHealth = 100;
// ===== AI MEMORY =====
private List<Vector3> playerPositions = new List<Vector3>();
private float attackTimer;
private float aiDecisionTime = 2f;
// ===== INTERNAL =====
private Vector3 aiTarget;
private bool aggressiveMode = false;
void Start()
{
aiTarget = transform.position;
}
void Update()
{
PlayerMovement();
RecordPlayerData();
AILogic();
AIMovement();
}
// ================= PLAYER MOVEMENT =================
void PlayerMovement()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Vector3 move = new Vector3(h, 0, v);
transform.Translate(move * playerSpeed * Time.deltaTime);
}
// ================= PLAYER DATA RECORD =================
void RecordPlayerData()
{
if (playerPositions.Count < 50)
{
playerPositions.Add(transform.position);
}
else
{
playerPositions.RemoveAt(0);
playerPositions.Add(transform.position);
}
attackTimer += Time.deltaTime;
}
// ================= AI BRAIN =================
void AILogic()
{
aiDecisionTime -= Time.deltaTime;
if (aiDecisionTime <= 0)
{
aiDecisionTime = 2f;
// AI observes player behavior
float averageDistance = 0f;
foreach (Vector3 pos in playerPositions)
{
averageDistance += Vector3.Distance(pos, aiEnemy.position);
}
averageDistance /= playerPositions.Count;
// AI decision making
if (averageDistance < 5f)
{
aggressiveMode = true;
}
else
{
aggressiveMode = false;
}
// AI sets new target
aiTarget = aggressiveMode ? transform.position : GetRandomPosition();
}
}
// ================= AI MOVEMENT =================
void AIMovement()
{
aiEnemy.position = Vector3.MoveTowards(
aiEnemy.position,
aiTarget,
aiSpeed * Time.deltaTime
);
}
// ================= RANDOM ESCAPE =================
Vector3 GetRandomPosition()
{
return new Vector3(
Random.Range(-6f, 6f),
0,
Random.Range(-6f, 6f)
);
}
// ================= DAMAGE SYSTEM =================
void OnCollisionEnter(Collision col)
{
if (col.gameObject.tag == "AI")
{
playerHealth -= 10;
Debug.Log("Player Hit! Health: " + playerHealth);
}
}
}
Steps to reproduce
using UnityEngine;
using System.Collections.Generic;
public class AISurvivalGame : MonoBehaviour
{
// ===== PLAYER SETTINGS =====
public float playerSpeed = 5f;
public int playerHealth = 100;
// ===== AI SETTINGS =====
public Transform aiEnemy;
public float aiSpeed = 3f;
public int aiHealth = 100;
// ===== AI MEMORY =====
private List<Vector3> playerPositions = new List<Vector3>();
private float attackTimer;
private float aiDecisionTime = 2f;
// ===== INTERNAL =====
private Vector3 aiTarget;
private bool aggressiveMode = false;
void Start()
{
aiTarget = transform.position;
}
void Update()
{
PlayerMovement();
RecordPlayerData();
AILogic();
AIMovement();
}
// ================= PLAYER MOVEMENT =================
void PlayerMovement()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Vector3 move = new Vector3(h, 0, v);
transform.Translate(move * playerSpeed * Time.deltaTime);
}
// ================= PLAYER DATA RECORD =================
void RecordPlayerData()
{
if (playerPositions.Count < 50)
{
playerPositions.Add(transform.position);
}
else
{
playerPositions.RemoveAt(0);
playerPositions.Add(transform.position);
}
attackTimer += Time.deltaTime;
}
// ================= AI BRAIN =================
void AILogic()
{
aiDecisionTime -= Time.deltaTime;
if (aiDecisionTime <= 0)
{
aiDecisionTime = 2f;
// AI observes player behavior
float averageDistance = 0f;
foreach (Vector3 pos in playerPositions)
{
averageDistance += Vector3.Distance(pos, aiEnemy.position);
}
averageDistance /= playerPositions.Count;
// AI decision making
if (averageDistance < 5f)
{
aggressiveMode = true;
}
else
{
aggressiveMode = false;
}
// AI sets new target
aiTarget = aggressiveMode ? transform.position : GetRandomPosition();
}
}
// ================= AI MOVEMENT =================
void AIMovement()
{
aiEnemy.position = Vector3.MoveTowards(
aiEnemy.position,
aiTarget,
aiSpeed * Time.deltaTime
);
}
// ================= RANDOM ESCAPE =================
Vector3 GetRandomPosition()
{
return new Vector3(
Random.Range(-6f, 6f),
0,
Random.Range(-6f, 6f)
);
}
// ================= DAMAGE SYSTEM =================
void OnCollisionEnter(Collision col)
{
if (col.gameObject.tag == "AI")
{
playerHealth -= 10;
Debug.Log("Player Hit! Health: " + playerHealth);
}
}
}
GDevelop platform
Mobile
GDevelop version
gdgfhfhshfhjd
Platform info
Details
OS (e.g. Windows, Linux, macOS, Android, iOS)
OS Version (e.g. Windows 10, macOS 10.15)
Browser(For Web) (e.g. Chrome, Firefox, Safari)
Device(For Mobile) (e.g. iPhone 12, Samsung Galaxy S21)
Additional context
using UnityEngine;
using System.Collections.Generic;
public class AISurvivalGame : MonoBehaviour
{
// ===== PLAYER SETTINGS =====
public float playerSpeed = 5f;
public int playerHealth = 100;
// ===== AI SETTINGS =====
public Transform aiEnemy;
public float aiSpeed = 3f;
public int aiHealth = 100;
// ===== AI MEMORY =====
private List<Vector3> playerPositions = new List<Vector3>();
private float attackTimer;
private float aiDecisionTime = 2f;
// ===== INTERNAL =====
private Vector3 aiTarget;
private bool aggressiveMode = false;
void Start()
{
aiTarget = transform.position;
}
void Update()
{
PlayerMovement();
RecordPlayerData();
AILogic();
AIMovement();
}
// ================= PLAYER MOVEMENT =================
void PlayerMovement()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Vector3 move = new Vector3(h, 0, v);
transform.Translate(move * playerSpeed * Time.deltaTime);
}
// ================= PLAYER DATA RECORD =================
void RecordPlayerData()
{
if (playerPositions.Count < 50)
{
playerPositions.Add(transform.position);
}
else
{
playerPositions.RemoveAt(0);
playerPositions.Add(transform.position);
}
attackTimer += Time.deltaTime;
}
// ================= AI BRAIN =================
void AILogic()
{
aiDecisionTime -= Time.deltaTime;
if (aiDecisionTime <= 0)
{
aiDecisionTime = 2f;
// AI observes player behavior
float averageDistance = 0f;
foreach (Vector3 pos in playerPositions)
{
averageDistance += Vector3.Distance(pos, aiEnemy.position);
}
averageDistance /= playerPositions.Count;
// AI decision making
if (averageDistance < 5f)
{
aggressiveMode = true;
}
else
{
aggressiveMode = false;
}
// AI sets new target
aiTarget = aggressiveMode ? transform.position : GetRandomPosition();
}
}
// ================= AI MOVEMENT =================
void AIMovement()
{
aiEnemy.position = Vector3.MoveTowards(
aiEnemy.position,
aiTarget,
aiSpeed * Time.deltaTime
);
}
// ================= RANDOM ESCAPE =================
Vector3 GetRandomPosition()
{
return new Vector3(
Random.Range(-6f, 6f),
0,
Random.Range(-6f, 6f)
);
}
// ================= DAMAGE SYSTEM =================
void OnCollisionEnter(Collision col)
{
if (col.gameObject.tag == "AI")
{
playerHealth -= 10;
Debug.Log("Player Hit! Health: " + playerHealth);
}
}
}