Пример #1
0
    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>();
    }
Пример #2
0
    public static ActorMananger Instance()
    {
        if (instance == null)
        {
            instance = new ActorMananger();
        }

        return(instance);
    }
Пример #3
0
    // Update is called once per frame
    void Update()
    {
        if (battleplayer != null)
        {
            battleplayer.Tick(Time.deltaTime);
        }

        ActorMananger.Instance().Tick(Time.deltaTime);
    }
Пример #4
0
    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;
    }
Пример #5
0
    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);
    }
Пример #6
0
    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);
        }
    }
Пример #7
0
    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();
    }
Пример #8
0
 public void BeforeDestroy()
 {
     ActorMananger.Instance().UnRgisterMonoBehaviour(animator.gameObject, actor);
 }
Пример #9
0
 public void AfterInit()
 {
     ActorMananger.Instance().RegisterMonoBehaviour(animator.gameObject, actor);
 }
Пример #10
0
    public void OnHitCallback(string attname)
    {
        Actor actor = ActorMananger.Instance().GetActorMonoBehaviour(gameObject);

        actor.OnHitCallBack(attname);
    }