public DirectionType GetDirection() { if (0 < directionBuffer.queue.Count) { BufferedDirection bufferedDirection = directionBuffer.queue.Peek() as BufferedDirection; if ((Time.realtimeSinceStartup >= directionBuffer.lastEventTime + bufferedDirection.delay) || (0 == bufferedDirection.delay)) { directionBuffer.queue.Dequeue(); directionBuffer.lastEventTime = Time.realtimeSinceStartup; return(bufferedDirection.direction); } } // W v: +, h: 0 (UP) // A v: 0, h: - (LEFT) // S v: -, h: 0 (DOWN) // D v: 0, h: + (RIGHT) float vert = Input.GetAxis("Vertical"); float horz = Input.GetAxis("Horizontal"); if (0 == vert && 0 == horz) { if (Input.GetKeyDown(KeyCode.Backspace)) { return(DirectionType.Stop); } if (Input.GetKeyDown(KeyCode.Delete)) { return(DirectionType.Stop); } return(DirectionType.None); } if (vert < 0) { if (horz < 0) { return(DirectionType.SW); } if (horz > 0) { return(DirectionType.SE); } return(DirectionType.South); } if (vert > 0) { if (horz < 0) { return(DirectionType.NW); } if (horz > 0) { return(DirectionType.NE); } return(DirectionType.North); } if (horz < 0) { return(DirectionType.West); } return(DirectionType.East); }
public void ForceStop() { BufferedDirection stop = new BufferedDirection(DirectionType.Stop); _keyboardScript.directionBuffer.queue.Enqueue(stop); }