Ejemplo n.º 1
0
    void InitialAiParam()
    {
        if (mParam != null)
            return;

        mParam = new AiParam ();

        mParam.Owner = this.gameObject;
        mParam.Anim = mAnim;
        mParam.NavAgent = mAgent;
        mParam.OwnerCollider = mCollider;
        mParam.OwnerRigidbody = mRigidbody;
        mParam.HandBall = mHandBall;

        mParam.Team = mTeam;

        mParam.WeightIK = 0F;

        mParam.Vec3Target = this.gameObject.transform.position + this.gameObject.transform.forward * 5F;

        mParam.OnAiStrategyChanged = OnAiStrategyChanged;
        mParam.OnAiActionChanged = OnAiActionChanged;
        mParam.OnAiEmotionChanged = OnAiEmotionChanged;

        OnAiStrategyChanged (mCurStrategy);
    }
Ejemplo n.º 2
0
    public override void OnLeave(ref AiParam _param)
    {
        if (_param == null || _param.NavAgent == null)
            return;

        _param.NavAgent.Stop ();
    }
Ejemplo n.º 3
0
    bool IsCatchable(ref AiParam _param)
    {
        if (_param == null || _param.NavAgent == null || _param.ObjTarget == null)
            return false;

        return Vector3.Distance (_param.Owner.transform.position, _param.ObjTarget.transform.position) <= CATCHABLE_DISTANCE;
    }
Ejemplo n.º 4
0
    void DoJump(ref AiParam _param)
    {
        if (_param == null || _param.OwnerRigidbody == null)
            return;

        _param.OwnerRigidbody.AddForce(Vector3.up * JUMP_FORCE, ForceMode.Impulse);
    }
Ejemplo n.º 5
0
    public override void OnEnter(ref AiParam _param)
    {
        if (_param == null || _param.NavAgent == null)
            return;

        _param.OnAiActionChanged (UnityChan_Ctrl.ActionState.Walk);

        //_param.NavAgent.Resume ();
        Movement (ref _param);

        int searchMax = 30;

        for (var i = 0; i < searchMax; i++)
        {
            Vector3 randomPoint = _param.Owner.transform.position + Random.insideUnitSphere * 3F;
            NavMeshHit hit;
            if (NavMesh.SamplePosition (randomPoint, out hit, 1F, 0xFF)) {

                NavMeshPath path = new NavMeshPath();
                if(_param.NavAgent.CalculatePath(hit.position, path) == true)
                {
                    _param.NavAgent.SetPath(path);
                    return;
                }
            }
        }
    }
Ejemplo n.º 6
0
    public override void OnEnter(ref AiParam _param)
    {
        if (_param == null || _param.NavAgent == null || _param.ObjTarget == null)
            return;

        _param.NavAgent.Resume ();
        _param.NavAgent.SetDestination (_param.ObjTarget.transform.position);
    }
Ejemplo n.º 7
0
    public override void OnUpdate(ref AiParam _param)
    {
        if (_param == null || _param.NavAgent == null)
            return;

        IncreasingIK (ref _param);

        if(IsArrival(ref _param) == true) _param.OnAiStrategyChanged(AiFactory.AiStrategyType.Standby);
    }
Ejemplo n.º 8
0
    public override void OnLeave(ref AiParam _param)
    {
        if (_param == null)
            return;

        Stop (ref _param);

        _param.Vec3Target = _param.Owner.transform.position + _param.Owner.transform.forward * VISIBLED_RANGE;
    }
Ejemplo n.º 9
0
    public override void OnUpdate(ref AiParam _param)
    {
        if (_param == null || _param.NavAgent == null || _param.ObjTarget == null)
            return;

        IncreasingIK (ref _param);

        if(IsCatchable(ref _param) == true) _param.OnAiStrategyChanged(AiFactory.AiStrategyType.Idle);
        else if(IsArrival(ref _param) == true) _param.NavAgent.SetDestination (_param.ObjTarget.transform.position);
    }
Ejemplo n.º 10
0
    public override void OnEnter(ref AiParam _param)
    {
        if (_param == null || _param.NavAgent == null || _param.ObjTarget == null)
            return;

        _param.OnAiActionChanged (UnityChan_Ctrl.ActionState.Run);

        //_param.NavAgent.Resume ();
        Movement (ref _param);
        _param.NavAgent.SetDestination (_param.ObjTarget.transform.position);
    }
Ejemplo n.º 11
0
    public override void OnLeave(ref AiParam _param)
    {
        if (_param == null || _param.NavAgent == null)
            return;

        //_param.NavAgent.Stop ();
        Stop (ref _param);

        if(_param.ObjTarget != null) _param.Vec3Target = _param.ObjTarget.transform.position;
        else                         _param.Vec3Target = _param.Owner.transform.position + _param.Owner.transform.forward * CATCHABLE_DISTANCE;
    }
Ejemplo n.º 12
0
    public override void OnEnter(ref AiParam _param)
    {
        if (_param == null)
            return;

        //if (_param.NavAgent != null) _param.NavAgent.enabled = false;

        _param.OnAiActionChanged (UnityChan_Ctrl.ActionState.Idle);

        _param.WaitTime = PAINT_WALL_FREQ;
    }
Ejemplo n.º 13
0
    public override void OnEnter(ref AiParam _param)
    {
        if (_param == null)
            return;

        //if (_param.NavAgent != null) _param.NavAgent.enabled = false;

        _param.OnAiActionChanged (UnityChan_Ctrl.ActionState.Idle);

        if (mSnowBall == null) mSnowBall = GameObject.Instantiate(Resources.Load("SnowBall")) as GameObject;
        if (mSnowBall != null) mSnowBall.name = "FreeBall";
    }
Ejemplo n.º 14
0
    public override void OnEnter(ref AiParam _param)
    {
        if (_param == null || _param.NavAgent == null)
            return;

        //_param.NavAgent.Resume ();
        Movement (ref _param);

        Vector3 home = Camera.main.transform.position + (Camera.main.transform.forward * 1F);

        _param.NavAgent.SetDestination (home);
    }
Ejemplo n.º 15
0
    public override void OnLeave(ref AiParam _param)
    {
        if (_param == null || _param.NavAgent == null)
            return;

        //_param.NavAgent.Stop ();
        Stop (ref _param);

        _param.HoldBall = false;

        _param.Vec3Target = Camera.main.transform.position;
    }
Ejemplo n.º 16
0
    public override void OnEnter(ref AiParam _param)
    {
        if (_param == null)
            return;

        _param.OnAiActionChanged (UnityChan_Ctrl.ActionState.Idle);

        _param.Weight = 0F;

        _param.Vec3Start = _param.Vec3Target;
        _param.Vec3End = ((Quaternion.Euler (new Vector3 (0F, Random.Range(-45F,45F), 0F)) * _param.Owner.transform.forward) * VISIBLED_RANGE) + _param.Owner.transform.position;
    }
Ejemplo n.º 17
0
    public override void OnLeave(ref AiParam _param)
    {
        if (_param == null || _param.NavAgent == null)
            return;

        //_param.NavAgent.enabled = true;

        if (mSnowBall != null)
        {
            GameObject.Destroy(mSnowBall);
            mSnowBall = null;
        }
    }
Ejemplo n.º 18
0
    public override void OnAnimatorIK(ref AiParam _param)
    {
        if (_param == null)
            return;

        _param.Anim.SetLookAtWeight (_param.WeightIK, 1F, 1F, 1F, 1F);

        _param.Anim.SetIKPositionWeight(AvatarIKGoal.RightHand, 0F);
        _param.Anim.SetIKRotationWeight(AvatarIKGoal.RightHand, 0F);

        _param.Anim.SetIKPositionWeight(AvatarIKGoal.LeftHand, 0F);
        _param.Anim.SetIKRotationWeight(AvatarIKGoal.LeftHand, 0F);
    }
Ejemplo n.º 19
0
    public override void OnEnter(ref AiParam _param)
    {
        if (_param == null || _param.NavAgent == null)
            return;

        _param.OnAiActionChanged (UnityChan_Ctrl.ActionState.Walk);

        _param.Weight = 0F;

        //_param.NavAgent.Resume ();
        Movement (ref _param);

        SearchReloadPoint (ref _param);
    }
Ejemplo n.º 20
0
    public override void OnUpdate(ref AiParam _param)
    {
        if (_param == null)
            return;

        DecreasingIK (ref _param);

        _param.WaitTime -= Time.deltaTime;
        if(_param.WaitTime <= 0F)
        {
            _param.WaitTime = PAINT_WALL_FREQ;

            DoPaintWall(ref _param);
        }
    }
Ejemplo n.º 21
0
    public override void OnAnimatorIK(ref AiParam _param)
    {
        if (_param == null)
            return;

        _param.Anim.SetLookAtWeight (_param.WeightIK, 1F, 1F, 1F, 1F);
        _param.Anim.SetLookAtPosition (_param.Vec3Target);

        _param.Anim.SetIKPositionWeight(AvatarIKGoal.RightHand, 1F);
        _param.Anim.SetIKPosition(AvatarIKGoal.RightHand, _param.Vec3Target + (Camera.main.transform.right * -0.5F));

        _param.Anim.SetIKPositionWeight(AvatarIKGoal.LeftHand, 1F);
        _param.Anim.SetIKPosition(AvatarIKGoal.LeftHand, _param.Vec3Target + (Camera.main.transform.right * 0.5F));

        _param.Anim.SetIKRotationWeight(AvatarIKGoal.RightHand, 0F);
        _param.Anim.SetIKRotationWeight(AvatarIKGoal.LeftHand, 0F);
    }
Ejemplo n.º 22
0
    public override void OnUpdate(ref AiParam _param)
    {
        if (_param == null)
            return;

        _param.Vec3Target = _param.Owner.transform.position + _param.Owner.transform.forward * VISIBLED_RANGE;

        DecreasingIK (ref _param);

        if(SearchForEnemy(ref _param, VISIBLED_RANGE) == true)
        {
            _param.OnAiStrategyChanged(AiFactory.AiStrategyType.Fight);
        }
        else if(IsArrival(ref _param) == true)
        {
            _param.OnAiEmotionChanged(UnityChan_Ctrl.EmotionState.Default);
            _param.OnAiStrategyChanged(AiFactory.AiStrategyType.Idle);
        }
    }
Ejemplo n.º 23
0
    public override void OnUpdate(ref AiParam _param)
    {
        if (_param == null)
            return;

        _param.Weight += Time.deltaTime * 0.5F;
        _param.Weight = Mathf.Clamp (_param.Weight, 0F, 1F);

        DecreasingIK (ref _param);

        if(IsArrival(ref _param) == true)
        {
            SearchReloadPoint (ref _param);
        }
        else if(1F <= _param.Weight)
        {
            _param.HoldBall = true;
            _param.OnAiStrategyChanged(AiFactory.AiStrategyType.Fight);
        }
    }
Ejemplo n.º 24
0
    void DoPaintWall(ref AiParam _param)
    {
        if (_param == null || _param.Owner == null)
            return;

        GameObject snowBall = GameObject.Instantiate(Resources.Load("SnowBall")) as GameObject;
        if (snowBall == null) return;

        snowBall.transform.position = _param.Owner.transform.position + _param.Owner.transform.up + _param.Owner.transform.forward;
        snowBall.transform.rotation = Quaternion.LookRotation(_param.Owner.transform.forward);

        Rigidbody rigidbody = snowBall.GetComponent<Rigidbody>();
        if (rigidbody == null) rigidbody = snowBall.AddComponent<Rigidbody>();

        Vector3 throwForce = (_param.Owner.transform.up * Random.Range(-0.5F,2F)) +
            (_param.Owner.transform.forward * Random.Range(0F,2F)) +
                (_param.Owner.transform.right * Random.Range(-0.5F,0.5F));

        rigidbody.AddForce(throwForce, ForceMode.Impulse);
    }
Ejemplo n.º 25
0
    public override void OnUpdate(ref AiParam _param)
    {
        if (_param == null)
            return;

        IncreasingIK (ref _param);

        Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);

        _param.Vec3Target = Camera.main.transform.position + ray.direction * 0.5F;

        if (mSnowBall != null) mSnowBall.transform.position = _param.Vec3Target;

        /*if(IsGround(ref _param) == true)
        {
            DoJump(ref _param);
        }*/

        DoThrowBall(ref _param);
    }
Ejemplo n.º 26
0
    protected void SearchReloadPoint(ref AiParam _param)
    {
        if (_param == null)
            return;

        int searchMax = 30;

        for (var i = 0; i < searchMax; i++)
        {
            Vector3 randomPoint = _param.Owner.transform.position + Random.insideUnitSphere * 3F;
            NavMeshHit hit;
            if (NavMesh.SamplePosition (randomPoint, out hit, 1F, 0xFF)) {

                NavMeshPath path = new NavMeshPath();
                if(_param.NavAgent.CalculatePath(hit.position, path) == true)
                {
                    _param.NavAgent.SetPath(path);
                    return;
                }
            }
        }
    }
Ejemplo n.º 27
0
    public override void OnAnimatorIK(ref AiParam _param)
    {
        if (_param == null)
            return;

        _param.Anim.SetLookAtWeight (_param.WeightIK, 1F, 1F, 1F, 1F);

        if(_param.ObjTarget != null)
        {
            _param.Anim.SetLookAtPosition (_param.ObjTarget.transform.position);

            _param.Anim.SetIKPositionWeight(AvatarIKGoal.RightHand, 1F);
            _param.Anim.SetIKPosition(AvatarIKGoal.RightHand, _param.ObjTarget.transform.position);
        }

        else
        {
            _param.Anim.SetIKPositionWeight(AvatarIKGoal.RightHand, 0F);
        }

        _param.Anim.SetIKRotationWeight(AvatarIKGoal.RightHand, 0F);
    }
Ejemplo n.º 28
0
    public override void OnUpdate(ref AiParam _param)
    {
        if (_param == null)
            return;

        IncreasingIK (ref _param);

        _param.Weight += Time.deltaTime * 0.5F;
        _param.Weight = Mathf.Clamp (_param.Weight, 0F, 1F);

        _param.Vec3Target = Vector3.Lerp (_param.Vec3Start, _param.Vec3End, _param.Weight);

        if(SearchForEnemy(ref _param, VISIBLED_RANGE) == true)
        {
            _param.OnAiStrategyChanged(AiFactory.AiStrategyType.Fight);
        }
        else if(1F <= _param.Weight)
        {
            _param.OnAiEmotionChanged(UnityChan_Ctrl.EmotionState.Default);
            _param.OnAiStrategyChanged(AiFactory.AiStrategyType.Patrol);
        }
    }
Ejemplo n.º 29
0
    bool IsShootable(ref AiParam _param)
    {
        if (_param == null || _param.ObjTarget == null)
            return false;

        /*
        Collider col = _param.ObjTarget.GetComponent<Collider>();
        if (col == null) return false;

        Ray ray = new Ray (_param.Owner.transform.position + _param.Owner.transform.up, _param.Owner.transform.forward);

        RaycastHit hitInfo;
        if (col.Raycast(ray, out hitInfo, FIRE_RANGE))
        {
            _param.Vec3Target = hitInfo.point;
            return true;
        }

        return false;
        */
        return Vector3.Distance (_param.OwnerCollider.gameObject.transform.position, _param.ObjTarget.transform.position) < FIRE_RANGE;
    }
Ejemplo n.º 30
0
    public override void OnUpdate(ref AiParam _param)
    {
        if (_param == null || _param.NavAgent == null)
            return;

        if ( _param.ObjTarget == null)
        {
            _param.OnAiStrategyChanged(AiFactory.AiStrategyType.Idle);
        }
        else
        {
            IncreasingIK (ref _param);

            if(IsCatchable(ref _param) == true)
            {
                GameObject.Destroy(_param.ObjTarget);
                _param.ObjTarget = null;
                _param.HoldBall = true;
                _param.OnAiStrategyChanged(AiFactory.AiStrategyType.GoBack);
            }
            else if(IsArrival(ref _param) == true) _param.NavAgent.SetDestination (_param.ObjTarget.transform.position);
        }
    }