コード例 #1
0
    private void AutoMove()
    {
        if ((GameValues.AutoMoveX || GameValues.AutoMoveY) && !isHoldingObject)
        {
            //bool isAboveBlender = false;
            Monster monster = null;

            // GameObject monsterGo = null;
            //if(targetMonster == null)
            targetMonster = EUtils.GetNearestObject(waveSpawner.SpawnedMonsters, transform.position);

            RaycastHit[] hit;
            if (targetMonster != null)
            {
                //BlenderCatch blender = GameObject.FindObjectOfType<BlenderCatch>();
                Defendable defendAble = GameObject.FindObjectOfType <Defendable>();
                //Vector3 castPosition = new Vector3(transform.position.x, transform.position.y + (EUtils.GetObjectCollUnitSize(gameObject).y), transform.position.z);
                hit = Physics.RaycastAll(targetMonster.transform.position, -Vector3.up /* * 0.5f*/, float.MaxValue);
                //Debug.DrawRay(castPosition, transform.forward * attackDistance, Color.red);
                // Debug.Log(hit.Length);
                for (int i = 0; i < hit.Length; i++)
                {
                    Defendable blenderCatch = hit[i].collider.GetComponent <Defendable>();
                    if (blenderCatch != null)
                    {
                        targetMonster = null;
                        return;
                    }
                }
                monster = targetMonster.GetComponent <Monster>();
            }

            if (GameValues.AutoMoveX)
            {
                if (monster != null)
                {
                    Ray        monsterRay = new Ray(monster.transform.position, -Vector3.up);
                    RaycastHit monsterHit;

                    if (!monster.isInBlender && !monster.isStunned)
                    {
                        Vector3 targetPosition = new Vector3(monster.transform.position.x, transform.position.y, transform.position.z);
                        transform.position = Vector3.MoveTowards(transform.position, targetPosition, 10 * Time.deltaTime);
                    }
                }
            }
            if (GameValues.AutoMoveY)
            {
                if (monster != null)
                {
                    //Vector3.Distance(transform.position, monster.transform.position) < 1)
                    //if (!monster.isInBlender && transform.position.x == monster.transform.position.x)

                    if (!monster.isInBlender && !monster.isStunned && Mathf.Abs(transform.position.x - monster.transform.position.x) < 1)
                    {
                        Vector3 targetPosition = new Vector3(transform.position.x, monster.transform.position.y, transform.position.z);
                        transform.position = Vector3.MoveTowards(transform.position, targetPosition, 10 * Time.deltaTime);
                    }
                }
            }
            if (GameValues.AutoGrab)
            {
                if (monster != null)
                {
                    if (!monster.isInBlender && !monster.isStunned && Vector3.Distance(transform.position, monster.transform.position) < 1)
                    {
                        VisualSqueeze(monster.minPressure + 4);
                    }
                }
            }
        }
        else if ((GameValues.AutoMoveX || GameValues.AutoMoveY) && isHoldingObject)
        {
            BlenderCatch blender = GameObject.FindObjectOfType <BlenderCatch>();//EUtils.GetNearestObject(waveSpawner.SpawnedMonsters, transform.position);
            if (GameValues.AutoMoveX)
            {
                //if (blender != null && /*transform.position.y == blender.transform.position.y + 7.50f*/)
                if (blender != null && Mathf.Abs(transform.position.y - blender.transform.position.y) > 5.50f)
                {
                    Vector3 targetPosition = new Vector3(blender.transform.position.x, transform.position.y, transform.position.z);
                    transform.position = Vector3.MoveTowards(transform.position, targetPosition, 10 * Time.deltaTime);
                }
            }
            if (GameValues.AutoMoveY)
            {
                if (blender != null)
                {
                    Vector3 targetPosition = new Vector3(transform.position.x, blender.transform.position.y + 5.75f, transform.position.z);
                    transform.position = Vector3.MoveTowards(transform.position, targetPosition, 10 * Time.deltaTime);
                }
            }
            if (GameValues.AutoGrab)
            {
                if (blender != null)
                {
                    //if (transform.position.y == blender.transform.position.y + 7.50f && Mathf.Abs(transform.position.x - blender.transform.position.x) < 1)
                    if (Mathf.Abs(transform.position.y - blender.transform.position.y) > 5.50f && Mathf.Abs(transform.position.x - blender.transform.position.x) < 0.5f)
                    {
                        VisualSqueeze(1);
                    }
                }
            }
        }
    }