public IEnumerator MoveToPosition(s_charactermanager returning_system) { positon = grid.VectorPositionFromWorld(transform.position); Queue <o_node> di = new Queue <o_node>(); foreach (o_node n in directions) { di.Enqueue(n); } Vector2Int newpos = new Vector2Int(); while (di.Count != 0) { Vector3 dir = (di.Peek().position - (Vector2)transform.position).normalized; s_sound.PlaySound(walksound); yield return(new WaitForSeconds(0.05f)); transform.Translate(dir * 20); di.Dequeue(); } newpos = grid.VectorPositionFromWorld(transform.position); grid.character_layer[positon.x, positon.y] = null; grid.character_layer[newpos.x, newpos.y] = this; grid.UnpaintAllNodes(); returning_system.LooseFocus(); }
void ICharacter.Intialize() { defeated = false; current_item = null; actionPoints = maxActionPoints; health = maxHealth; hasdisapeared = false; GameObject manager = GameObject.Find("Manager"); if (GameObject.Find("CharacterManager") != null) { charctMnger = GameObject.Find("CharacterManager").GetComponent <s_charactermanager>(); } renderer = GetComponent <SpriteRenderer>(); grid = manager.GetComponent <s_grid>(); path = manager.GetComponent <s_pathfind>(); }
public void Teleport(s_charactermanager returning_system) { positon = grid.VectorPositionFromWorld(transform.position); Queue <o_node> di = new Queue <o_node>(); foreach (o_node n in directions) { di.Enqueue(n); } Vector2Int newpos = new Vector2Int(); while (di.Count != 1) { di.Dequeue(); } transform.position = di.Peek().position; newpos = grid.VectorPositionFromWorld(transform.position); grid.character_layer[positon.x, positon.y] = null; grid.character_layer[newpos.x, newpos.y] = this; grid.UnpaintAllNodes(); di.Clear(); returning_system.LooseFocus(); }