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); } } }