private void Update() { if (status == FamiliarStatus.FOLLOW) { targetPosition = player.transform.position; } if (targets.Count > 0 && status != FamiliarStatus.ATTACK) { status = FamiliarStatus.ATTACK; } if (targets.Count > 0 && targets[0] == null) { targets.RemoveAt(0); } if (targets.Count == 0 && status == FamiliarStatus.ATTACK) { status = FamiliarStatus.MOVE; } if (Vector3.Distance(transform.position, player.gameObject.transform.position) < stopRadius && slot != null) { player.AddItem(slot); Destroy(slot.gameObject); slot = null; } }
public void LostTarget(GameObject target) { targets.Remove(target); if (targets.Count == 0) { status = FamiliarStatus.MOVE; } }
public void SpawnFXOfType(FamiliarStatus command) { Color runecolor = runeDefinition.GetColorFromCommand(command); FXSprite.color = runecolor; if (FXSprite.TryGetComponent <Animator>(out Animator a)) { a.Play("RuneSpin"); } }
public void AwaitMove(FamiliarStatus command, Vector3 target) { status = command; if (command == FamiliarStatus.FOLLOW) { targetPosition = player.transform.position; } else { targetPosition = target; } }
private void Start() { targets = new List <GameObject>(); status = FamiliarStatus.FOLLOW; target.RegisterCFP(AwaitMove); projPool = new GameObject[projectilePoolSize]; for (int i = 0; i < projectilePoolSize; i++) { GameObject t = Instantiate(proj); t.GetComponent <Projectile>().FollowMe(transform); t.SetActive(false); projPool[i] = t; } }
public void Pickup(IItem item) { if (slot == null) { slot = item; } else { slot.gameObject.transform.parent = null; slot.gameObject.transform.localScale = new Vector3(1, 1, 1); slot.gameObject.transform.position = item.gameObject.transform.position + new Vector3(0.25f, 0, 0); slot.gameObject.GetComponent <BoxCollider2D>().enabled = true; slot = item; } rb.velocity = Vector2.zero; status = FamiliarStatus.MOVE; targetPosition = transform.position; }
public Color GetColorFromCommand(FamiliarStatus command) { switch (command) { case FamiliarStatus.FOLLOW: return(FollowColor); case FamiliarStatus.MOVE: return(MoveColor); case FamiliarStatus.ATTACK: return(AttackColor); case FamiliarStatus.RETRIEVE: return(RetrieveColor); case FamiliarStatus.INTERACT: return(InteractColor); default: return(Color.white); } }
public void FoundTarget(GameObject target) { status = FamiliarStatus.ATTACK; targets.Add(target); rb.velocity = Vector2.zero; }