public override void Init(string name, Actor parent) { base.Init(name, parent); GameObject prefab = ActorMananger.Instance().GetPrefab(actorName); instance = GameObject.Instantiate(prefab); animator = instance.GetComponentInChildren <Animator>(); }
public static ActorMananger Instance() { if (instance == null) { instance = new ActorMananger(); } return(instance); }
// Update is called once per frame void Update() { if (battleplayer != null) { battleplayer.Tick(Time.deltaTime); } ActorMananger.Instance().Tick(Time.deltaTime); }
public override void Init() { GameObject prefab = ActorMananger.Instance().GetPrefab("Effect/" + EffectPrefabName); _instance = GameObject.Instantiate(prefab); if (Target != null) { Target.AddChild(_instance); } animator = _instance.GetComponentInChildren <Animator>(); animator.Play("hit"); AnimatorClipInfo[] clipInfo = animator.GetCurrentAnimatorClipInfo(0); _time = clipInfo[0].clip.length; }
public override void Init() { //GameObject prefab = ActorMananger.Instance().GetPrefab("Effect/" + FlyEffectPrefabName); //_instanceFly = GameObject.Instantiate(prefab); _instanceFly = ActorMananger.Instance().GetGameObjectInstance("Effect/" + FlyEffectPrefabName); _instanceFly.transform.position = Caster.Position; start_position = Caster.Position; Vector3 distance = Target.Position - Caster.Position; total_fly_time = distance.magnitude / Speed; current_fly_time = 0; //particle_system_ = _instanceFly.GetComponent<ParticleSystem>(); // float cosTheta = Vector3.Dot(Vector3.up, distance.normalized); // float theta = Mathf.Acos(cosTheta); //particle_system_.startRotation3D = new Vector3(0, (Caster.Rotation - Mathf.PI / 2), theta); float cosTheta = Vector3.Dot(Vector3.up, distance.normalized); float theta = Mathf.Acos(cosTheta); float cos_theta2 = Vector3.Dot(Vector3.up, Camera.main.transform.forward); float theta2 = Mathf.Acos(cos_theta2); if (Caster.Rotation > 0) { theta2 = -theta2; } //_instanceFly.transform.rotation = Quaternion.Euler(0, (Caster.Rotation - Mathf.PI / 2) * Mathf.Rad2Deg, -theta * Mathf.Rad2Deg); _instanceFly.transform.rotation = Quaternion.Euler(theta2 * Mathf.Rad2Deg, (Caster.Rotation - Mathf.PI / 2) * Mathf.Rad2Deg, -theta * Mathf.Rad2Deg); }
public override bool Tick(float dt) { if (current_fly_time < total_fly_time) { _instanceFly.transform.position = start_position + (Target.Position - start_position) * current_fly_time / total_fly_time; //Debug.Log("current postion in tick " + _instanceFly.transform.position); current_fly_time += dt; return(false); } else { //Debug.Log("Renderer Attack Effect at frame: " + Launch.battleplayer._battle.Frame + " time : " + System.Environment.TickCount ); _instanceFly.transform.position = Target.Position; //GameObject.Destroy(_instanceFly); ActorMananger.Instance().RecycleGameObjectInstance("Effect/" + FlyEffectPrefabName, _instanceFly); _instanceFly = null; // 只有击中 AttackEffectHit hitEffect = new AttackEffectHit(); hitEffect.EffectPrefabName = HitEffectPrefabName; hitEffect.Caster = Caster; hitEffect.Target = Target; hitEffect.Init(); Target.attackEffectList.Add(hitEffect); return(true); } }
public void Init() { _battle = new Battle(); _battle.Init(); _timeStamp = 0; _lastFrame = 0; // map unit and actor List <Unit> .Enumerator enumerator = _battle.attakerList.GetEnumerator(); while (enumerator.MoveNext()) { Actor actor = ActorMananger.Instance().CreateActor(enumerator.Current); unitActorMap.Add(enumerator.Current.ID, actor); } enumerator = _battle.defenderList.GetEnumerator(); while (enumerator.MoveNext()) { Actor actor = ActorMananger.Instance().CreateActor(enumerator.Current); unitActorMap.Add(enumerator.Current.ID, actor); } _battle.InitState(); }
public void BeforeDestroy() { ActorMananger.Instance().UnRgisterMonoBehaviour(animator.gameObject, actor); }
public void AfterInit() { ActorMananger.Instance().RegisterMonoBehaviour(animator.gameObject, actor); }
public void OnHitCallback(string attname) { Actor actor = ActorMananger.Instance().GetActorMonoBehaviour(gameObject); actor.OnHitCallBack(attname); }