Ejemplo n.º 1
0
    void UpdateCamera(Character mainActor)
    {
        if(IsCameraLocked)
        {
            Log.i ("camer locked");
            return;
        }

        if (mainActor.splited)
        {
            Vector2 pos2d = new Vector2(0f, 0f);
            Character splitChild = mainActor.GetValidScript(mainActor.splitChild.transform);
            if(! mainActor.IsDead && ! splitChild.IsDead)
            {
                pos2d = (mainActor.Postion2D  + splitChild.Postion2D)/2f;
            }
            else if( mainActor.IsDead && ! splitChild.IsDead)
            {
                pos2d = splitChild.Postion2D;

                Character tmp = mainActor;
                tmp.SetMainActor(false);
                tmp.gameObject.SetActive(false);

                ResetMainActor(tmp.splitChild.transform);
                mainActor = GetMainActor();
                mainActor.splited = false;
                mainActor.splitChild = null;
                mainActor.splitParent = null;
                mainActor.SetMainActor(true);
                mainActor.isSplitChild = false;
                LockCamera();
                //float oldz = this.transform.position.z;
                float z1 = mainActor.Scale/(1.5f)*(-15f);
                if( z1 > -6f)
                {
                    z1 = -6f;
                }
                Vector2 tmp2 = mainActor.Postion2D;
                Vector3 tmp3 = new Vector3(tmp2.x, tmp2.y, z1);
                AniMoveTo(this.transform.position, tmp3, delegate {
                    UnLockCamera();
            });
                Log.i ("split parent dead");
                //return;
            }
            else if(!mainActor.IsDead && splitChild.IsDead)
            {
                pos2d = mainActor.Postion2D;
                mainActor.splited = false;
                splitChild.gameObject.SetActive(false);
                mainActor.splitChild = null;
                mainActor.splitParent = null;
                Log.i ("split child dead");
                LockCamera();
                //float oldz = this.transform.position.z;
                float z1 = mainActor.Scale/(1.5f)*(-15f);
                if( z1 > -6f)
                {
                    z1 = -6f;
                }
                Vector2 tmp2 = mainActor.Postion2D;
                Vector3 tmp3 = new Vector3(tmp2.x, tmp2.y, z1);
                AniMoveTo(this.transform.position, tmp3, delegate {
                    UnLockCamera();
                });

                //return;
            }
            else if(mainActor.IsDead && splitChild.IsDead)
            {
                Log.i ("all dead");

                mainActor.gameObject.SetActive(false);
            }

            float oldz = this.transform.position.z;
            float z = mainActor.Scale/(1.5f)*(-15f);
            if( z > -6f)
            {
                z = -6f;
            }
            if(mainActor.State == EnuGameActorState.StateTeleport)
            {
                this.transform.position = new Vector3(pos2d.x, pos2d.y, oldz);
            }
            else
            {
                this.transform.position = new Vector3(pos2d.x, pos2d.y, z);
            }

        }
        else
        {
            Vector2 pos2d = mainActor.Postion2D;
            float oldz = this.transform.position.z;
            float z = -8f + (mainActor.Scale - 1f)*2*(-5f);
            if( z > -8f)
            {
                z = -8f;
            }
            if(mainActor.State == EnuGameActorState.StateTeleport)
            {
                this.transform.position = new Vector3(pos2d.x, pos2d.y, oldz);
            }
            else
            {
                this.transform.position = new Vector3(pos2d.x, pos2d.y, z);
            }
        }
    }