void updateFollower(Messageable follower, Messageable target) { if (follower == target) { return; } moveMessageableTowards(follower, target.transform.position); }
void moveMessageableTowards(Messageable target, Vector3 destination) { if(target.transform.position.x - destination.x > moveThreshold) { target.receiveMessage(new WorldMessage(WorldMessage.MessageType.USE_ABILITY, Ability.MOVE_LEFT)); } if(target.transform.position.x - destination.x < -moveThreshold) { target.receiveMessage(new WorldMessage(WorldMessage.MessageType.USE_ABILITY, Ability.MOVE_RIGHT)); } if(target.transform.position.z - destination.z > moveThreshold) { target.receiveMessage(new WorldMessage(WorldMessage.MessageType.USE_ABILITY, Ability.MOVE_DOWN)); } if(target.transform.position.z - destination.z < -moveThreshold) { target.receiveMessage(new WorldMessage(WorldMessage.MessageType.USE_ABILITY, Ability.MOVE_UP)); } }
void updateTarget(Messageable newTarget) { if (newTarget != null && newTarget != target && (newTarget.networkView.isMine)) { if (target != null) { applyMaterial(target, neutralMaterial); } if (follower != null) { applyMaterial(follower, followerMaterial); } applyMaterial(newTarget, playerMaterial); target = newTarget; } }
void moveMessageableTowards(Messageable target, Vector3 destination) { if (target.transform.position.x - destination.x > moveThreshold) { target.receiveMessage(new WorldMessage(WorldMessage.MessageType.USE_ABILITY, Ability.MOVE_LEFT)); } if (target.transform.position.x - destination.x < -moveThreshold) { target.receiveMessage(new WorldMessage(WorldMessage.MessageType.USE_ABILITY, Ability.MOVE_RIGHT)); } if (target.transform.position.z - destination.z > moveThreshold) { target.receiveMessage(new WorldMessage(WorldMessage.MessageType.USE_ABILITY, Ability.MOVE_DOWN)); } if (target.transform.position.z - destination.z < -moveThreshold) { target.receiveMessage(new WorldMessage(WorldMessage.MessageType.USE_ABILITY, Ability.MOVE_UP)); } }
void Update() { if (Input.GetMouseButtonDown(0) && !Input.GetKey(KeyCode.LeftShift)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitData; if (Physics.Raycast(ray, out hitData)) { Messageable newR = hitData.transform.GetComponent <Messageable>(); updateTarget(newR); } } if (Input.GetMouseButton(1)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitData; if (Physics.Raycast(ray, out hitData) && target != null) { moveMessageableTowards(target, hitData.point); } } if (Input.GetMouseButtonDown(2)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitData; if (Physics.Raycast(ray, out hitData)) { Instantiate(createe, hitData.point + new Vector3(0, createe.transform.lossyScale.y, 0), hitData.transform.rotation); } } if (Input.GetMouseButtonDown(0) && Input.GetKey(KeyCode.LeftShift)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitData; if (Physics.Raycast(ray, out hitData)) { Messageable newF = hitData.transform.GetComponent <Messageable>(); if (follower != null) { applyMaterial(follower, neutralMaterial); } if (newF != null && newF.networkView.isMine) { applyMaterial(newF, followerMaterial); applyMaterial(target, playerMaterial); } follower = newF; } } if (follower != null) { updateFollower(follower, target); } if (Input.anyKey) { if (Input.GetKey(KeyCode.Escape)) { Rect r = new Rect(Screen.height / 2 - 100, Screen.width / 2 - 100, Screen.height / 2 + 100, Screen.width / 2 + 100); } foreach (var key in messageMap.Keys) { if (Input.GetKey(key) && target != null) { target.receiveMessage(messageMap[key]); } } } }
private static void applyMaterial(Messageable o, Material m) { MeshRenderer mrMesh = o.GetComponent <MeshRenderer>(); mrMesh.material = m; }
private static void applyMaterial(Messageable o, Material m) { MeshRenderer mrMesh = o.GetComponent<MeshRenderer>(); mrMesh.material = m; }
void updateTarget(Messageable newTarget) { if (newTarget != null && newTarget != target && (newTarget.networkView.isMine)) { if(target != null) applyMaterial(target, neutralMaterial); if(follower != null) applyMaterial(follower, followerMaterial); applyMaterial(newTarget, playerMaterial); target = newTarget; } }
void Update() { if(Input.GetMouseButtonDown(0) && !Input.GetKey(KeyCode.LeftShift)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitData; if (Physics.Raycast(ray, out hitData)) { Messageable newR = hitData.transform.GetComponent<Messageable>(); updateTarget (newR); } } if(Input.GetMouseButton(1)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitData; if (Physics.Raycast(ray, out hitData) && target != null) { moveMessageableTowards (target, hitData.point); } } if(Input.GetMouseButtonDown(2)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitData; if (Physics.Raycast(ray, out hitData)) { Instantiate(createe, hitData.point + new Vector3(0, createe.transform.lossyScale.y, 0), hitData.transform.rotation); } } if(Input.GetMouseButtonDown(0) && Input.GetKey(KeyCode.LeftShift)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitData; if (Physics.Raycast(ray, out hitData)) { Messageable newF = hitData.transform.GetComponent<Messageable>(); if(follower != null) applyMaterial(follower, neutralMaterial); if (newF != null && newF.networkView.isMine) { applyMaterial(newF, followerMaterial); applyMaterial(target, playerMaterial); } follower = newF; } } if(follower != null) { updateFollower(follower, target); } if(Input.anyKey) { if(Input.GetKey(KeyCode.Escape)) { Rect r = new Rect(Screen.height / 2 - 100, Screen.width / 2 - 100, Screen.height / 2 + 100, Screen.width / 2 + 100); } foreach (var key in messageMap.Keys) { if (Input.GetKey(key) && target != null) { target.receiveMessage(messageMap[key]); } } } }