Example #1
0
 void PickUpItem(InteractiveObj self)
 {
     //if (!ikCtrl) ikCtrl = self.GetComponent<UnityChan.IKCtrlRightHand>();
     if (objPickedItem)
     {
         ThrowItem(self);
         return;
     }
     Collider[] items = Physics.OverlapSphere(self.transform.position, fDistance, 1 << LayerMask.NameToLayer("Accessable"));
     for (int i = 0, length = items.Length; i < length; ++i)
     {
         Q_SceneObj sceneObj = items[i].GetComponent <Q_SceneObj>();
         if (!sceneObj)
         {
             continue;
         }
         switch (sceneObj.objType)
         {
         case Q_SceneObj.Type.PickUpItem:
             Rigidbody rigid          = sceneObj.GetComponent <Rigidbody>();
             Vector3   localPos       = transform.localPosition;
             Transform tsfSceneCamera = ThirdPersonPlayer.Instance.CameraController.transform;
             rigid.constraints = RigidbodyConstraints.FreezeAll;
             rigid.transform.SetParent(ThirdPersonPlayer.Instance.transform.Find("HandItemPos"), false);
             rigid.transform.localPosition = Vector3.zero;
             rigid.transform.localRotation = Quaternion.identity;
             rigid.gameObject.SetLayer(self.gameObject.layer);
             objPickedItem = sceneObj.gameObject;
             //ikCtrl.isIkActive = true;
             //ikCtrl.targetObj = sceneObj.transform;
             return;
         }
     }
 }
Example #2
0
    private void OnTriggerEnter(Collider other)
    {
        Q_SceneObj obj = other.GetComponent <Q_SceneObj>();

        if (obj && obj.objType == Q_SceneObj.Type.Skill)
        {
            Explosion();
        }
    }
Example #3
0
    public void OnTrigger(Collider other)
    {
        if (!Master.IsAlive || !BattleManager.Instance.IsBattleBegin)
        {
            return;
        }
        Q_SceneObj sceneObj = other.GetComponent <Q_SceneObj>();

        if (sceneObj)
        {
            switch (sceneObj.objType)
            {
            case Q_SceneObj.Type.Skill:
                SkillEffectBase[] skillEffects = sceneObj.GetComponentsInChildren <SkillEffectBase>(true);
                for (int i = 0, length = skillEffects.Length; i < length; ++i)
                {
                    skillEffects[i].Execute(WorldInteractObj.Instance, Master);
                }
                sceneObj.UseObj();
                break;

            case Q_SceneObj.Type.GuidePoint:
                sceneObj.UseObj();
                UISystem.Instance.ShowGuideDialog(sceneObj.name);
                break;

            case Q_SceneObj.Type.TriggerPoint:
                sceneObj.UseObj();
                break;

            case Q_SceneObj.Type.LoadScene:
                sceneObj.UseObj();
                GameClient.Instance.LoadScene(sceneObj.strNeedItemName);
                break;

            case Q_SceneObj.Type.Vedio:
                VedioPlayer.Play(sceneObj.strNeedItemName, null);
                sceneObj.gameObject.SetActive(false);
                sceneObj.UseObj();
                break;

            case Q_SceneObj.Type.SuccessPoint:
                sceneObj.UseObj();
                BattleManager.Instance.BattleOver(true);
                break;
            }
        }
        InteractiveObj target = other.GetComponent <InteractiveObj>();

        if (target && target.IsAlive && target.IsEnemy(ThirdPersonPlayer.Instance.Camp))
        {
            ThirdPersonPlayer.Instance.DoDamage(new Damage(WorldSetting.Effect.Physical, 1), target);
        }
    }
Example #4
0
    void PickUpItem()
    {
        if (!IsAlive || UISystem.Instance.InAnyGuide)
        {
            return;
        }
        Collider[] cols = Physics.OverlapBox(transform.position, ColliderSelf.bounds.size / 2, transform.rotation);
        for (int i = 0; i < cols.Length; i++)
        {
            Q_SceneObj sceneObj = cols[i].GetComponent <Q_SceneObj>();
            if (!sceneObj)
            {
                continue;
            }
            switch (sceneObj.objType)
            {
            case Q_SceneObj.Type.Item:
                if (!dicPickedItems.ContainsKey(sceneObj.name))
                {
                    dicPickedItems[sceneObj.name] = 1;
                }
                dicPickedItems[sceneObj.name] = dicPickedItems[sceneObj.name] + 1;
                sceneObj.UseObj();
                return;

            case Q_SceneObj.Type.NeedItem:
                if (!dicPickedItems.ContainsKey(sceneObj.strNeedItemName))
                {
                    UISystem.Instance.ShowMessageBox("需要" + sceneObj.strNeedItemName + "!");
                    return;
                }
                int num = dicPickedItems[sceneObj.strNeedItemName];
                if (--num < 0)
                {
                    dicPickedItems.Remove(sceneObj.strNeedItemName);
                    UISystem.Instance.ShowMessageBox("需要" + sceneObj.strNeedItemName + "!");
                    return;
                }
                sceneObj.UseObj();
                if (num == 0)
                {
                    dicPickedItems.Remove(sceneObj.strNeedItemName);
                }
                else
                {
                    dicPickedItems[sceneObj.strNeedItemName] = num;
                }
                return;
            }
        }
    }
Example #5
0
    private void OnTriggerExit(Collider other)
    {
        Q_SceneObj sceneObj = other.GetComponent <Q_SceneObj>();

        if (!sceneObj)
        {
            return;
        }
        switch (sceneObj.objType)
        {
        case Q_SceneObj.Type.GuidePoint:
            UISystem.Instance.CloseGuide();
            break;
        }
    }
Example #6
0
    void OnTrigger(Collider other)
    {
        if (!BattleManager.Instance.IsBattleBegin)
        {
            return;
        }
        switch (objType)
        {
        case Type.Skill:
            InteractiveObj target = other.GetComponent <InteractiveObj>();
            if (!target || target == ThirdPersonPlayer.Instance || !target.IsEnemy(ThirdPersonPlayer.Instance.Camp))
            {
                return;
            }
            SkillEffectBase[] skillEffects = GetComponentsInChildren <SkillEffectBase>(true);
            for (int i = 0, length = skillEffects.Length; i < length; ++i)
            {
                skillEffects[i].Execute(WorldInteractObj.Instance, target);
            }
            UseObj();
            break;

        case Type.TriggerPoint:
            Q_SceneObj obj = other.GetComponent <Q_SceneObj>();
            if (obj && obj.objType == Type.PickUpItem)
            {
                UseObj();
            }
            break;

        case Type.PickUpItem:
            Rigidbody body = GetComponent <Rigidbody>();
            if (body && body.velocity.sqrMagnitude > 0.9f)
            {
                UseObj();
            }
            break;
        }
    }
Example #7
0
    protected override CastResult OnCast()
    {
        for (int i = 0, length = Random.Range(MissleMinCount, MissleMaxCount + 1); i < length; ++i)
        {
            if (ReleaseFX)
            {
                EffectPlayer.PlayOnTransform(ReleaseFX, ReleaseFXPoint);
            }
            if (ReleaseSE)
            {
                AudioSystem.Instance.PlayOnTransform(ReleaseSE, ReleaseFXPoint);
            }
            Missle missle = Instantiate(MisslePrefab, transform.position, transform.rotation).GetOrAddComponent <Missle>();
            switch (LockType)
            {
            case SkillLockType.Position:
                switch (MissleType)
                {
                case Type.Bullet:
                    missle.InitBullet(TargetPos, MissileSpeed, Settlement);
                    break;

                default:
                    missle.Init(TargetPos, MissileSpeed, Settlement);
                    break;
                }
                break;

            case SkillLockType.NoLock:
                switch (MissleType)
                {
                case Type.Bullet:
                    //missle.InitBullet(TargetPos, MissileSpeed, Settlement);
                    break;

                default:
                    missle.gameObject.AddComponent <SphereCollider>().isTrigger = true;
                    missle.gameObject.AddComponent <Rigidbody>().isKinematic    = true;
                    missle.InitFlyFront(Master.transform.forward, MissileSpeed, SkillMaxRange, (hitObj, missleScript) =>
                    {
                        if (hitObj)
                        {
                            InteractiveObj target = hitObj.GetComponent <InteractiveObj>();
                            if (target)
                            {
                                if (target.IsAlive && target.IsEnemy(Master.Camp))
                                {
                                    Settlement(target);
                                    Destroy(missleScript.gameObject);
                                }
                                return;
                            }
                            Q_SceneObj sceneObj = hitObj.GetComponent <Q_SceneObj>();
                            if (sceneObj)
                            {
                                switch (sceneObj.objType)
                                {
                                case Q_SceneObj.Type.Skill:
                                case Q_SceneObj.Type.Item:
                                case Q_SceneObj.Type.NeedItem:
                                    break;

                                default:
                                    return;
                                }
                            }
                        }
                        if (HitFX)
                        {
                            EffectPlayer.PlayAtPos(HitFX, missleScript.transform.position);
                        }
                        if (HitSE)
                        {
                            AudioSystem.Instance.PlayAtPos(HitSE, missleScript.transform.position);
                        }
                        missleScript.Alive = false;
                        Destroy(missleScript.gameObject);
                    });
                    break;
                }
                break;

            default:
                if (Target)
                {
                    missle.Init(Target.transform, MissileSpeed, (tsf) => Settlement(tsf.GetComponent <InteractiveObj>()));
                }
                else
                {
                    missle.Init(TargetPos, MissileSpeed, Settlement);
                }
                break;
            }
            missle.SetLifeTime(MissleLifeTime);
            if (FlySE)
            {
                AudioSystem.Instance.PlayOnTransform(FlySE, missle.transform);
            }
        }
        return(CastResult.Success);
    }