示例#1
0
    // Update is called once per frame
    void Update()
    {
        if (isStatic)
        {
            isStatic = false;
            print("TRIGGERABLE ATTACKER IN ELSE" + attacker);
            summonVisual = Instantiate(sumChar, attacker.transform.position, attacker.transform.rotation); //Instantiates a projectile from the given prefab. TEMP LOOK AT THIS
                                                                                                           // Could use an ability delay for the wind up.
            summonControl.PlayShortHit();
            ActivateObject();
            // Need to set a delay function before it spawns the hitbox.
        }

        if (arrived)
        {
            print("SPAWNING HITBOX FOR STATIC");
            SpawnHitbox();
        }


        if (returning)     // Returns to the summmoner after completing its actions.
        {
            print("RETURN HOME DETECTED FOR STATIC");
            ReturnHome();
        }

        if (isLeaving)
        {
            SummonLeave();
        }



        // Need to set a delay function before it spawns the hitbox.
        //GameObject clonedHitbox = Instantiate(givenHitbox, hitboxSpawn.position, hitboxRotation); // CHECK THIS for clarity of hitboxrotation;

        /*
         *         summonVisual.transform.position = Vector3.Lerp(startingPosition.position, castTarget, fracJourney);
         *
         *         if (fracJourney == 1)
         *         {
         *         GameObject hitboxClone = Intantiate(givenHitbox, hitboxSpawn.position, hitboxSpawn.rotation);
         *         }
         */
    }
    void MovePlayer()
    {
        summonControl.PlayShortHit();
        if (doesHitboxFollow) // If the attack has a hitbox on the summon.
        {
            print("SPAWN FOLLOW DETECTED");
            SpawnFollowHitbox();
        }


        print("MOVE PLAYER STARTED");
        // Instantiates a projectile from the given prefab. TEMP LOOK AT THIS
        // gameObject.transform.LookAt(target Position); // Rotates the object to face the click location. Disable this to remove that effect if needed.
        // target Position = castTarget

        if (castTarget.x > posRangeCheck.x && castTarget.z > posRangeCheck.z)                                                                     // Checks if the cast target determined by mouse click is greater than the cast range.
        {
            limitTargetPos = new Vector3(posRangeCheck.x, castTarget.y, posRangeCheck.z);                                                         // Sets a cast limit.
            summonVisual.transform.position = Vector3.MoveTowards(summonVisual.transform.position, limitTargetPos, travelSpeed * Time.deltaTime); // Transform the summon to the position specified by the limited range of the cast point specified by.
            MonoBehaviour.print("exceeded both ranges");
            if (summonVisual.transform.position == limitTargetPos)                                                                                // Once it hits the limited range.
            {
                MonoBehaviour.print("Arrived at range limit");
                isMoving = false;                                // Sets isMoving false to stop it from moving


                arrived = true;                                   // Sets arrived to true to run the SpawnHitbox script.
                //SpawnHitbox(summonVisual);

                MonoBehaviour.print("SUMMON X" + summonVisual.transform.position.x);
                MonoBehaviour.print("SUMMON Y" + summonVisual.transform.position.y);
                MonoBehaviour.print("SUMMON Z" + summonVisual.transform.position.z);


                StartCoroutine("timeDeactivate");  // Start coroutine to despawn the hitboxes
            }
        }

        else if (castTarget.x > posRangeCheck.x && castTarget.z < negativeRangeCheck.z)
        {
            limitTargetPos = new Vector3(posRangeCheck.x, castTarget.y, negativeRangeCheck.z);
            summonVisual.transform.position = Vector3.MoveTowards(summonVisual.transform.position, limitTargetPos, travelSpeed * Time.deltaTime);
            MonoBehaviour.print("exceeded both ranges");
            if ((summonVisual.transform.position.x == limitTargetPos.x) && (summonVisual.transform.position.z == limitTargetPos.z))
            {
                MonoBehaviour.print("Arrived at range limit");
                isMoving = false;
                arrived  = true;                                 // Sets arrived to true to run the SpawnHitbox script.
                //SpawnHitbox(summonVisual);

                MonoBehaviour.print("SUMMON X" + transform.position.x);
                MonoBehaviour.print("SUMMON Y" + transform.position.y);
                MonoBehaviour.print("SUMMON Z" + transform.position.z);


                StartCoroutine("timeDeactivate");
            }
        }



        else if (castTarget.x < negativeRangeCheck.x && castTarget.z > posRangeCheck.z)
        {
            limitTargetPos = new Vector3(negativeRangeCheck.x, castTarget.y, posRangeCheck.z);
            summonVisual.transform.position = Vector3.MoveTowards(summonVisual.transform.position, limitTargetPos, travelSpeed * Time.deltaTime);
            MonoBehaviour.print("exceeded both ranges");
            if ((summonVisual.transform.position.x == limitTargetPos.x) && (summonVisual.transform.position.z == limitTargetPos.z))
            {
                MonoBehaviour.print("Arrived at range limit");
                isMoving = false;
                arrived  = true;                                 // Sets arrived to true to run the SpawnHitbox script.
                //SpawnHitbox(summonVisual);

                MonoBehaviour.print("SUMMON X" + summonVisual.transform.position.x);
                MonoBehaviour.print("SUMMON Y" + summonVisual.transform.position.y);
                MonoBehaviour.print("SUMMON Z" + summonVisual.transform.position.z);


                StartCoroutine("timeDeactivate");
            }
        }


        else if (castTarget.x > posRangeCheck.x)
        {
            limitTargetPos = new Vector3(posRangeCheck.x, castTarget.y, castTarget.z);
            summonVisual.transform.position = Vector3.MoveTowards(summonVisual.transform.position, limitTargetPos, travelSpeed * Time.deltaTime);
            MonoBehaviour.print("exceeded x");
            if ((summonVisual.transform.position.x == limitTargetPos.x) && (summonVisual.transform.position.z == limitTargetPos.z))
            {
                MonoBehaviour.print("Arrived at range limit");
                isMoving = false;
                arrived  = true;                                 // Sets arrived to true to run the SpawnHitbox script.
                //SpawnHitbox(summonVisual);

                MonoBehaviour.print("SUMMON X" + transform.position.x);
                MonoBehaviour.print("SUMMON Y" + transform.position.y);
                MonoBehaviour.print("SUMMON Z" + transform.position.z);

                StartCoroutine("timeDeactivate");
            }
        }

        else if (castTarget.z > posRangeCheck.z)
        {
            limitTargetPos = new Vector3(castTarget.x, castTarget.y, posRangeCheck.z);
            summonVisual.transform.position = Vector3.MoveTowards(summonVisual.transform.position, limitTargetPos, travelSpeed * Time.deltaTime);
            MonoBehaviour.print("exceeded z");
            if ((summonVisual.transform.position.x == limitTargetPos.x) && (summonVisual.transform.position.z == limitTargetPos.z))
            {
                MonoBehaviour.print("Arrived at range limit");
                isMoving = false;
                arrived  = true;                                 // Sets arrived to true to run the SpawnHitbox script.
                //SpawnHitbox(summonVisual);

                MonoBehaviour.print("SUMMON X" + summonVisual.transform.position.x);
                MonoBehaviour.print("SUMMON Y" + summonVisual.transform.position.y);
                MonoBehaviour.print("SUMMON Z" + summonVisual.transform.position.z);

                StartCoroutine("timeDeactivate");
            }
        }

        else if (castTarget.x < negativeRangeCheck.x && castTarget.z < negativeRangeCheck.z)
        {
            limitTargetPos = new Vector3(negativeRangeCheck.x, castTarget.y, negativeRangeCheck.z);
            summonVisual.transform.position = Vector3.MoveTowards(summonVisual.transform.position, limitTargetPos, travelSpeed * Time.deltaTime);
            MonoBehaviour.print("exceeded both ranges");
            if ((summonVisual.transform.position.x == limitTargetPos.x) && (summonVisual.transform.position.z == limitTargetPos.z))
            {
                MonoBehaviour.print("Arrived at range limit");
                isMoving = false;
                arrived  = true;                                 // Sets arrived to true to run the SpawnHitbox script.
                //SpawnHitbox(summonVisual);

                MonoBehaviour.print("SUMMON X" + summonVisual.transform.position.x);
                MonoBehaviour.print("SUMMON Y" + summonVisual.transform.position.y);
                MonoBehaviour.print("SUMMON Z" + summonVisual.transform.position.z);

                StartCoroutine("timeDeactivate");
            }
        }

        else if (castTarget.x < negativeRangeCheck.x)
        {
            limitTargetPos = new Vector3(negativeRangeCheck.x, castTarget.y, castTarget.z);
            summonVisual.transform.position = Vector3.MoveTowards(summonVisual.transform.position, limitTargetPos, travelSpeed * Time.deltaTime);
            MonoBehaviour.print("exceeded -x");
            if ((summonVisual.transform.position.x == limitTargetPos.x) && (summonVisual.transform.position.z == limitTargetPos.z))
            {
                MonoBehaviour.print("Arrived at range limit");
                isMoving = false;
                arrived  = true;                                 // Sets arrived to true to run the SpawnHitbox script.
                //SpawnHitbox(summonVisual);

                MonoBehaviour.print("SUMMON X" + summonVisual.transform.position.x);
                MonoBehaviour.print("SUMMON Y" + summonVisual.transform.position.y);
                MonoBehaviour.print("SUMMON Z" + summonVisual.transform.position.z);

                StartCoroutine("timeDeactivate");
            }
        }

        else if (castTarget.z < negativeRangeCheck.z)
        {
            limitTargetPos = new Vector3(castTarget.x, castTarget.y, negativeRangeCheck.z);
            summonVisual.transform.position = Vector3.MoveTowards(summonVisual.transform.position, limitTargetPos, travelSpeed * Time.deltaTime);
            MonoBehaviour.print("exceeded -z");

            if ((summonVisual.transform.position.x == limitTargetPos.x) && (summonVisual.transform.position.z == limitTargetPos.z))
            {
                MonoBehaviour.print("Arrived at range limit");
                isMoving = false;
                arrived  = true;                                 // Sets arrived to true to run the SpawnHitbox script.
                //SpawnHitbox(summonVisual);

                MonoBehaviour.print("SUMMON X" + summonVisual.transform.position.x);
                MonoBehaviour.print("SUMMON Y" + summonVisual.transform.position.y);
                MonoBehaviour.print("SUMMON Z" + summonVisual.transform.position.z);


                StartCoroutine("timeDeactivate");

                //CoroutineWithMultipleParameters(1.0F, 2.0F, "foo")
            }
        }
        else
        {
            summonVisual.transform.position = Vector3.MoveTowards(summonVisual.transform.position, castTarget, travelSpeed * Time.deltaTime);

            // gameObject.transform.position = Vector3.MoveTowards(gameObject.transform.position, travelTarget, travelRate);
        }



        if ((summonVisual.transform.position.x == castTarget.x) && (summonVisual.transform.position.z == castTarget.z))
        {
            MonoBehaviour.print("SUMMON X" + summonVisual.transform.position.x);
            MonoBehaviour.print("SUMMON Y" + summonVisual.transform.position.y);
            MonoBehaviour.print("SUMMON Z" + summonVisual.transform.position.z);

            MonoBehaviour.print("Matches all parameters");
            isMoving = false;
            arrived  = true;                                 // Sets arrived to true to run the SpawnHitbox script.
            //SpawnHitbox(summonVisual);

            StartCoroutine("timeDeactivate");
        }

        Debug.DrawLine(summonVisual.transform.position, castTarget, Color.red);
    }