public void SetUpBehaviour(GameEntity entity, EC_Movement movement) { this.entity = entity; this.movement = movement; nextScanTime = Time.time + UnityEngine.Random.Range(0, scanInterval); AssignToIdle(); }
public MeleeAttackBehaviour(GameEntity entity, Transform transform) : base(entity, transform) { movement = entity.movement; combat = entity.combat; sensing = entity.sensing; unitAI = entity.unitAI; nextUpdateDestinationTime = Random.Range(0, updateDestinationInterval); }
public void SetUpBehaviour(GameEntity entity, EC_Movement movement) { this.entity = entity; this.movement = movement; if (positionToWanderAround == null) { positionToWanderAround = entity.transform; } }
/*enum MeleeFighterState * { * TooFar, * TooNear, * InMeleeDistance * } * * MeleeFighterState state;*/ protected override void Update() { if (Time.time > nextDistanceCheckTime) { nextDistanceCheckTime = Time.time + distanceCheckingInterval; myWidth = entity.width; enemyWidth = enemySensing.nearestEnemy.width; Vector3 nearestEnemyPosition = enemySensing.nearestEnemy.transform.position; Vector3 myPosition = entity.transform.position; float widthFactor = myWidth + enemyWidth; //multiply the resulting distanceVectorBythisFactor to also use width Vector3 distanceVector = nearestEnemyPosition - myPosition; //float distanceToEnemySquared = (distanceVector - distanceVector.normalized * widthFactor).sqrMagnitude; float distanceToEnemy = (distanceVector - distanceVector.normalized * widthFactor).magnitude; //if the enemy is moving, we move to the position he will be at the time we arrive EC_Movement enemyMovement = enemySensing.nearestEnemy.GetComponent <EC_Movement>(); if (enemyMovement.IsMoving()) { //heuristically calculae future position //1. how long will it take for me to reach the enemy? float timeToReachEnemy = distanceToEnemy / movement.GetMaxSpeed(); //2. where will the enemy be after this time Vector3 futurePosition = nearestEnemyPosition + enemyMovement.GetCurrentVelocity() * timeToReachEnemy; movement.MoveTo(futurePosition); } else { movement.MoveTo(nearestEnemyPosition + (myPosition - nearestEnemyPosition).normalized * (perfectMeleeDistance + myWidth + enemyWidth)); } if ((nearestEnemyPosition - myPosition).sqrMagnitude > maxMeleeDistance) { inRange = false; movement.StopLookAt(); } else { inRange = true; movement.LookAt(enemySensing.nearestEnemy.transform); } } if (inRange) { if (weapon.CanAttack()) { weapon.Attack(); } } }
public void SetUpBehaviour(GameEntity entity, EC_Movement movement, EC_MissileWeapon weapon) { this.entity = entity; this.movement = movement; this.weapon = weapon; nextDistanceCheckTime = UnityEngine.Random.Range(0, distanceCheckingInterval); maxShootingDistance *= maxShootingDistance; }
public void SetUpBehaviour(GameEntity entity, EC_Movement movement, EC_ScanForEnemyUnits enemySensing, EC_MeleeWeapon weapon) { this.entity = entity; this.movement = movement; this.enemySensing = enemySensing; this.weapon = weapon; nextDistanceCheckTime = UnityEngine.Random.Range(0, distanceCheckingInterval); maxMeleeDistance *= maxMeleeDistance; }
void Start() { if (playerEntity != null) { health = playerEntity.GetComponent <EC_Health>(); movement = playerEntity.GetComponent <EC_Movement>(); combat = playerEntity.GetComponent <EC_Combat>(); unitAnimation = playerEntity.GetComponent <EC_UnitAnimation>(); unitAI = playerEntity.GetComponent <EC_UnitAI>(); } }
public override void SetUpEntityComponent(GameEntity entity) { base.SetUpEntityComponent(entity); unitAnimation = entity.unitAnimation; health = entity.health; movement = entity.movement; myTransform = entity.myTransform; myCollider = entity.GetComponent <Collider>(); gizmoColor = myTransform.GetChild(0).GetChild(0).GetComponent <SkinnedMeshRenderer>().material.color; }
public void AimAt(GameEntity target) { aiming = true; currentTarget = target; currentEnemyMovement = target.GetComponent <EC_Movement>(); if (currentEnemyMovement != null) { hasMovement = true; } else { hasMovement = false; } }
protected override void Start() { sensing = GetComponent <EC_Sensing>(); movement = GetComponent <EC_Movement>(); playerController = GetComponent <EC_PlayerController>(); fishieAI = GetComponent <EC_FishieAI>(); ressources = GetComponent <EC_Ressources>(); actions = GetComponent <EC_Actions>(); //setup all attached components if (playerController != null) { components = new GameEntityComponent[] { sensing, movement, actions, ressources, playerController } } ; else if (fishieAI != null) { components = new GameEntityComponent[] { sensing, movement, actions, ressources, fishieAI } } ; base.Start(); } }
public override void SetUpEntityComponent(GameEntity entity) { base.SetUpEntityComponent(entity); ressources = (entity as Fishie).ressources; movement = (entity as Fishie).movement; }
public void SetUpBehaviour(GameEntity entity, EC_Movement movement, EC_ScanForEnemyUnits sensing) { this.entity = entity; this.movement = movement; this.sensing = sensing; }