void Dialogue() { if (currentNode == null) { //find conversation root node System.Collections.Generic.List <NodeEditorFramework.Node> nodes = interactTarget.InteractionTree.nodes; RootNode root = null; for (var i = 0; i < nodes.Count; ++i) { if (nodes[i] is RootNode) { RootNode cur = (RootNode)nodes[i]; if (cur.Name == interactTarget.Root) { root = cur; break; } } } if (root != null) { currentNode = root.Outputs[0].GetNodeAcrossConnection(); done = false; } else { State = States.Explore; Debug.Log(string.Format("Could not find root node \"{0}\" in InteractionTree!")); } } else //if there is a node to be done { if (!done) { DialogueNode d = (DialogueNode)currentNode; Debug.Log(interactTarget.gameObject.name + " says: " + d.DialogueText); done = true; } } if (Input.GetButtonDown("Submit")) { if (currentNode != null) { //get the next node along currentNode = currentNode.Outputs[0].GetNodeAcrossConnection(); done = false; if (currentNode == null) { State = States.Explore; Debug.Log("Conversation over!"); } } } }
// Update is called once per frame void Update() { //Input phase split out - I like to do this but it's optional switch (state) { case Player.States.Idle: if (Input.GetKeyDown(KeyCode.W)) { state = Player.States.Moving; } if (Input.GetKeyDown(KeyCode.S)) { state = Player.States.Reverse; } break; case Player.States.Moving: if (Input.GetKeyDown(KeyCode.S)) { state = Player.States.Idle; } break; case Player.States.Reverse: if (!Input.GetKey(KeyCode.S)) { state = Player.States.Idle; } break; } //Movement phase switch (state) { case Player.States.Idle: currentSpeed = Mathf.Lerp(currentSpeed, 0, Time.deltaTime); //Or MoveTowards break; case Player.States.Moving: currentSpeed = Mathf.Lerp(currentSpeed, maxSpeed, Time.deltaTime); //Or MoveTowards break; case Player.States.Reverse: currentSpeed = Mathf.Lerp(currentSpeed, maxReverseSpeed, Time.deltaTime); //Or MoveTowards break; } //Actually move transform.position += Vector3.right * currentSpeed * Time.deltaTime; transform.LookAt(new Vector3(Camera.main.ScreenToWorldPoint(Input.mousePosition).x, 0f, transform.rotation.z)); print(Camera.main.ScreenToWorldPoint(Input.mousePosition)); }
private void MoveView() { KeyboardState keys = Keyboard.GetState(); Player.States state = player.getState(); //player pressing up if (state == Player.States.WalkUp) { viewCorner[1] = viewCorner[1] - 1; if (viewCorner[1] < 0) { viewCorner[1] = 0; } } else { //player pressing down if (state == Player.States.WalkDown) { viewCorner[1] = viewCorner[1] + 1; if (viewCorner[1] > tileMatrix.GetLength(0) - 10) { viewCorner[1] = tileMatrix.GetLength(0) - 10; } } else { //player pressing left if (state == Player.States.WalkLeft) { viewCorner[0] = viewCorner[0] - 1; if (viewCorner[0] < 0) { viewCorner[0] = 0; } } else { //player pressing right if (state == Player.States.WalkRight) { viewCorner[0] = viewCorner[0] + 1; if (viewCorner[0] > tileMatrix[0].GetLength(0) - 10) { viewCorner[0] = tileMatrix[0].GetLength(0) - 10; } } } } } }
public void ChangeState(Player.States state) { if (state == Player.States.IDLE) { stateMachine.ChangeState(0); } else if (state == Player.States.WALKING) { stateMachine.ChangeState(1); } else if (state == States.ATTACKING) { stateMachine.ChangeState(2); } }
void Explore() { //handle movement input int movement = Mathf.RoundToInt(Input.GetAxisRaw("Horizontal")); transform.position += new Vector3(movement * walkSpeed * Time.deltaTime, 0, 0); if (Input.GetButtonDown("Submit")) { //Action[] ThingsToDo = interactTarget.GetActionSet(); //State = States.Decision; if (interactTarget != null) { Debug.Log("Interacted with " + interactTarget); State = States.Dialogue; } return; } }