Inheritance: GameBehavior
コード例 #1
0
    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);
            }
        }
    }
コード例 #2
0
ファイル: PlayerInput.cs プロジェクト: nanahs/Global-2018
    //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>());
            }
        }
    }
コード例 #3
0
 protected void Awake()
 {
     possessable   = GetComponentInChildren <Possessable>();
     currentHealth = maxHealth;
     animations    = GetComponent <EntityAnimations>();
     movement      = GetComponent <Movement>();
     rigidBody     = GetComponent <Rigidbody2D>();
 }
コード例 #4
0
    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();
            }
        }
    }
コード例 #5
0
    // 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;
    }
コード例 #6
0
    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");
        }
    }
コード例 #7
0
    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");
        }
    }
コード例 #8
0
    private void Unpossess()
    {
        if (possessing != null && CanUnpossess)
        {
            if (possessing.Unpossess())
            {
                col.enabled            = true;
                spriteRenderer.enabled = true;

                possessing = null;
            }
        }
    }
コード例 #9
0
    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);
    }
コード例 #10
0
    // 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;
            }
        }
    }
コード例 #11
0
    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);
            }
        }
    }
コード例 #12
0
    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;
                }
            }
        }
    }
コード例 #13
0
ファイル: ExorciseAction.cs プロジェクト: nhayes1031/2DGame
        public override void Act(GameObject obj)
        {
            Possessable poss = obj.GetComponent <Possessable>();

            poss.Exorcised();
        }
コード例 #14
0
	void Start()
	{
		this.possessable = this.GetComponent<Possessable>();
		ghost = GameObject.Find("GhostController");
		alreadyActivated = false;
	}
コード例 #15
0
 void Start()
 {
     this.possessable = this.GetComponent<Possessable>();
 }