Example #1
0
    public Character Refresh(excel_refresh refreshExcel, Scene scn)
    {
        int       index          = Mathf.RandRange(0, refreshExcel.birthpoint.Length - 1);
        string    birthPointName = refreshExcel.birthpoint[index];
        MarkPoint markPoint      = GetMarkPoint(scn.ScnID, birthPointName);

        if (markPoint == null)
        {
            return(null);
        }
        Vector3 targetPos = markPoint.position;
        Vector3 dir       = new Vector3(Mathf.RandRange(-1.0f, 1.0f), 0.0f, Mathf.RandRange(-1.0f, 1.0f));

        dir.Normalize();
        float dist = Mathf.RandRange(0.0f, 1.0f) * refreshExcel.refreshDist;

        targetPos += (dist * dir);
        Vector3 hitPos = Vector3.zero;

        uint layer = NavigationSystem.GetLayer(markPoint.position);

        if (NavigationSystem.LineCast(markPoint.position, targetPos, layer, out hitPos))
        {
            targetPos = hitPos;
        }
        float h = 0.0f;

        if (NavigationSystem.GetLayerHeight(targetPos, layer, out h))
        {
            targetPos.y = h;
        }
        NPC npc = new NPC();

        return(npc);
    }
Example #2
0
    static void ResetTargePos(Character cha, ChildObject childObject, SkillContext context, excel_skill_event e)
    {
        SkillSelectCharactorType selType = (SkillSelectCharactorType)e.evnetParam1;
        Character selTarget = context.SelectCharactorByType(selType);

        if (selTarget == null)
        {
            return;
        }

        float fAngle = (float)e.evnetParam2;

        if (e.evnetParam3 > 0)
        {
            float fAngleR = (float)e.evnetParam3 * 2.0f;
            float fPct    = UnityEngine.Random.Range(0.0f, 1.0f);
            fAngle += fPct * fAngleR - fAngleR;
        }

        Quaternion q   = Quaternion.AngleAxis(fAngle, Vector3.up);
        Vector3    dir = selTarget.Direction;

        if (e.evnetParam4 > 0 && context.mOwner != selTarget)
        {
            dir   = selTarget.Position - context.mOwner.Position;
            dir.y = 0.0f;
            dir.Normalize();
        }
        dir = q * dir;
        float   dist      = (float)e.evnetParam5 * 0.001f;
        Vector3 targetPos = selTarget.Position + dir * dist;

        TargetPosTestType testType = (TargetPosTestType)e.evnetParam6;

        switch (testType)
        {
        case TargetPosTestType.None:
            break;

        case TargetPosTestType.LineTest:
        {
            uint layer = NavigationSystem.GetLayer(context.mOwner.Position);
            if (NavigationSystem.LineCast(context.mOwner.Position, targetPos, layer, out targetPos))
            {
                break;
            }
            break;
        }

        case TargetPosTestType.TargetInNav:
        {
            if (!NavigationSystem.IsInNavigation(targetPos))
            {
                targetPos = selTarget.Position;
            }
            break;
        }
        }
        context.TargetPos = targetPos;
    }
Example #3
0
    protected void UpdateMove()
    {
        if (mPosDirty)
        {
            UpdateVisibleInfo();
            mPosDirty = false;
        }
        if (!IsCannotFlag(CannotFlag.CannotMove) && Speed > 0.0f)
        {
            Position += mSpeed * Time.DeltaTime * Direction;
            float h;
            if (NavigationSystem.GetLayerHeight(Position, mNavLayer, out h))
            {
                Vector3 pos = Position;
                pos.y    = h;
                Position = pos;
            }
            else
            {
                mNavLayer = NavigationSystem.GetLayer(Position);
            }
        }

        UpdateSearchMove();
    }
Example #4
0
 public void SearchMove(Vector3 pos, float destRadius = 0.3f, bool sync = true)
 {
     if (mNavLayer == 0)
     {
         mNavLayer = NavigationSystem.GetLayer(pos);
         if (mNavLayer == 0)
         {
             return;
         }
     }
     Vector3[] path;
     if (!NavigationSystem.Nav_CalcLayerPath(Position, pos, mNavLayer, out path))
     {
         return;
     }
     mPath             = path;
     mCurrentNodeIndex = 0;
     Speed             = 0.0f;
     mDestRadius       = destRadius;
 }
Example #5
0
    void InitPos(Transform parentObj)
    {
        ChildObjectMoveType mt = (ChildObjectMoveType)mData.moveType;

        switch (mt)
        {
        case ChildObjectMoveType.Bind:
        {
            transform.parent = mContext.mOwner.transform;
            break;
        }

        case ChildObjectMoveType.BindPos:
        {
            if (mTarget != null)
            {
                transform.parent = mTarget.transform;
            }
            break;
        }
        }

        ChildObjectInitPosType posType = (ChildObjectInitPosType)mData.initPos;

        switch (posType)
        {
        case ChildObjectInitPosType.Src:
        {
            mParentObj = mContext.mOwner.transform;
            Position   = mParentObj.position;
            break;
        }

        case ChildObjectInitPosType.SrcHinge:
        {
            Character cha       = mContext.mOwner;
            string    hingeName = mData.initHinge;
            mParentObj = cha.transform;
            Position   = mParentObj.position;
            break;
        }

        case ChildObjectInitPosType.Target:
        {
            if (mTarget == null)
            {
                mParentObj = mContext.mOwner.transform;
            }
            else
            {
                mParentObj = mTarget.transform;
            }
            Position = mParentObj.position;
            break;
        }

        case ChildObjectInitPosType.TargetHinge:
        {
            if (mTarget == null)
            {
                mParentObj = mContext.mOwner.transform;
            }
            else
            {
                string hingeName = mData.initHinge;
                mParentObj = mTarget.transform;
            }
            Position = mParentObj.position;
            break;
        }

        case ChildObjectInitPosType.TargetPos:
        {
            Position = mContext.TargetPos;
            break;
        }

        case ChildObjectInitPosType.CurSkillObject:
        {
            Position = parentObj.position;
            break;
        }
        }

        mNavLayer = NavigationSystem.GetLayer(Position);
    }