public void LookForTarget() { //Initialize closest distance squared with a high number to ensure that first target is always closer float closestDistanceSquared = 1000f; //If last closest target has left the range, set closest target to null if (closestTarget) { if (!proximitySensor.targetsInRange.Contains(closestTarget)) { closestTarget = null; } } //Iterate through all the valid targets within range foreach (Possessable target in proximitySensor.targetsInRange) { //Calculate player and target position in 2D Vector2 playerPosition2D = new Vector2(transform.position.x, transform.position.y); Vector2 targetPosition2D = new Vector2(target.transform.position.x, target.transform.position.y); //Compare distance to current target against the current shortest distance if (Utilities.DistanceBetweenVectorsSquared(playerPosition2D, targetPosition2D) < closestDistanceSquared) { //If current target is closer, register it as closest target and update closest distance closestTarget = target; closestDistanceSquared = Utilities.DistanceBetweenVectorsSquared(playerPosition2D, targetPosition2D); } } }
//takes control of other objects given an input void takeControl() { if (Input.GetKeyDown(KeyCode.W)) { Possessable target = Possessable.GetPossessableInRange(transform.position, 2); if (target == null) { return; } if (target.type == PossessableType.Outlet) { Outlet(target.GetComponent <Outlet> ()); } if (target.type == PossessableType.Outlet2) { Outlet2(target.GetComponent <Outlet2Lamp> ()); } if (target.type == PossessableType.TV) { Television(target.GetComponent <TVLauncher> ()); } if (target.type == PossessableType.Vacuum) { Vacuum(target.GetComponent <VacuumController> ()); } if (target.type == PossessableType.Car) { CarFunc(target.GetComponent <CarController>()); } } }
protected void Awake() { possessable = GetComponentInChildren <Possessable>(); currentHealth = maxHealth; animations = GetComponent <EntityAnimations>(); movement = GetComponent <Movement>(); rigidBody = GetComponent <Rigidbody2D>(); }
protected virtual void HandleInput() { if (!possessing) { Vector3 prevPosition = transform.position; Vector2 velocity = new Vector2(Input.GetAxis("LSX"), Input.GetAxis("LSY")); velocity = velocity * speed * Time.deltaTime; transform.position += (Vector3)velocity; } if (Input.GetButtonDown("B")) { if (possessing) { //MessageCenter.Instance.Broadcast(new CameraChangeFollowedMessage(GameObject.FindGameObjectWithTag("Player").transform, Vector3.zero)); Possessable possessable = objectToPossess.GetComponent <Possessable>(); possessable.exorcise(); possessing = false; MessageCenter.Instance.Broadcast(new PossessorSpawnedMessage(this)); SpriteRenderer face = this.gameObject.GetComponent <SpriteRenderer>(); face.color = new Color(1f, 1f, 1f, 1f); //ExitPossession(); } } if (Input.GetButtonDown("A")) { if (!possessing) { if (objectToPossess != null) { Possessable possessable = objectToPossess.GetComponent <Possessable>(); possessable.possess(); possessing = true; MessageCenter.Instance.Broadcast(new PossessorDestroyedMessage(this)); SpriteRenderer renderer = objectToPossess.GetComponent <SpriteRenderer>(); SpriteRenderer face = this.gameObject.GetComponent <SpriteRenderer>(); face.color = new Color(1f, 1f, 1f, 0f); Color color = Color.white; if (colors.TryGetValue("opaque", out color)) { renderer.color = color; } } } } if (Input.GetAxis("LT") > 0.2f) { if (possessing) { Possessable possessable = objectToPossess.GetComponent <Possessable>(); possessable.useAbility(); } } }
// Start is called before the first frame update void Start() { m_Rb = GetComponent <Rigidbody2D>(); maxLeft = m_Rb.position.x; maxRight = maxLeft + range; possessable = GetComponent <Possessable>(); dir = possessable.state.speed; }
private void OnTriggerExit2D(Collider2D collision) { //Check if triggering object is a valid target Possessable target = collision.GetComponent <Possessable>(); //If a valid target exits the detection range, remove them from valid targets if (target && targetsInRange.Contains(target)) { targetsInRange.Remove(target); Debug.Log(target.gameObject.name + " is out of range"); } }
private void OnTriggerEnter2D(Collider2D collision) { //Check if triggering object is a valid target Possessable target = collision.GetComponent <Possessable>(); //If a valid target enters the detection range, add them to valid targets if (target) { targetsInRange.Add(target); Debug.Log(target.gameObject.name + " entered range"); } }
private void Unpossess() { if (possessing != null && CanUnpossess) { if (possessing.Unpossess()) { col.enabled = true; spriteRenderer.enabled = true; possessing = null; } } }
public static Possessable GetPossessableInRange(Vector3 position, float maxRange) { Possessable closest = null; float closestDist = float.MaxValue; foreach (Possessable p in allPossessables) { float dist = Vector3.Distance(position, p.transform.position); if (dist < closestDist && dist < maxRange) { closest = p; closestDist = dist; } } return(closest); }
// Update is called once per frame void Update() { if (Input.GetKeyDown("space")) { //If an object if not currently possed, perform a raycast to check for possessable object if (possessedObject == null) { //Send a Raycast originating from the player to see if an object is within range RaycastHit hit; if (Physics.Raycast(player.transform.position, player.transform.TransformDirection(Vector3.forward), out hit, 1.0f)) { //Check if the collided object has the possessable component possessedObject = hit.collider.gameObject.GetComponent <Possessable> (); if (possessedObject != null) { //Possess the object possessedObject.GetComponent <Possessable> ().possess(); //Set the active player representation player.SetActive(false); //bow.SetActive (true); bow.GetComponent <BowBehave>().possessed = possessedObject.gameObject; } } //If an object is possessed, depossess it } else { //Reactivate the player and update its position player.SetActive(true); player.GetComponent <GridMove> ().setTarget(possessedObject.gameObject.GetComponent <GridMove>().getGridPosition()); player.GetComponent <GridMove> ().setGridPosition(possessedObject.gameObject.GetComponent <GridMove>().getGridPosition()); player.transform.position = possessedObject.gameObject.GetComponent <GridMove>().getGridPosition(); //bow.SetActive (false); bow.GetComponent <BowBehave>().possessed = null; //Depossess the object and clear its value possessedObject.GetComponent <Possessable> ().depossess(); possessedObject = null; } } }
public void OnTriggerEnter2D(Collider2D collision) { int parentId = GetComponent <ProjectileData>().ParentId; if (collision.gameObject.layer == 12 && parentId != collision.transform.parent.GetInstanceID()) { Possessable possessable = collision.gameObject.GetComponentInParent <Possessable>(); if (possessable != null) { possessable.Possessed(); GameObject player = GameObject.FindGameObjectWithTag("Player"); Destroy(player); GameObject camera = GameObject.Find("CameraManager"); CameraManager cm = camera.GetComponent <CameraManager>(); cm.Follow(collision.gameObject.transform); } } }
private void Possess() { Collider2D[] possessables = new Collider2D[16]; int count = rb.OverlapCollider(contactFilter, possessables); for (int i = 0; i < count; i++) { Possessable p = possessables[i].GetComponent <Possessable>(); if (p != null) { if (p.Possess(player)) { transform.position = p.transform.position; possessing = p; col.enabled = false; spriteRenderer.enabled = false; break; } } } }
public override void Act(GameObject obj) { Possessable poss = obj.GetComponent <Possessable>(); poss.Exorcised(); }
void Start() { this.possessable = this.GetComponent<Possessable>(); ghost = GameObject.Find("GhostController"); alreadyActivated = false; }
void Start() { this.possessable = this.GetComponent<Possessable>(); }