コード例 #1
0
ファイル: DefaultZoology.cs プロジェクト: TianYiJT/FreedomAI
        public void DoRun(SimpleAI sAI, string code)
        {
            if (code == "Die")
            {
                sAI.Destroy();
            }

            TreeObject to = (TreeObject)sAI.mCharacter;

            if (to.timer < 1.0f)
            {
                to.timer += Time.deltaTime;
                return;
            }
            SimpleAI[] SimpleAIs = SimpleAISetSingleton.getInstance().GetComponent <SimpleAISet> ().FindAIsWithRiaus(sAI.mAIRT.transform.position, 5.0f, 1 << LayerMask.NameToLayer("Default"), "Glass");
            to.timer      = 0.0f;
            to.mTempLife -= 180 + (int)(30 * to.mStrongRate);
            for (int i = 0; i < SimpleAIs.Length; i++)
            {
                glassObject go = (glassObject)SimpleAIs [i].mCharacter;
                if (go.mHp > 500)
                {
                    to.mTempLife += (int)(go.mHp / 500.0f);
                    //Debug.Log ("Grass");
                }
            }
        }
コード例 #2
0
ファイル: DefaultZoology.cs プロジェクト: TianYiJT/FreedomAI
        private float ComputeGreen(SimpleAI sAI)
        {
            GameObject g = sAI.mAIRT;
            Color      c = g.GetComponent <MeshRenderer> ().material.color;

            return(1.0f - c.r);
        }
コード例 #3
0
ファイル: DefaultZoology.cs プロジェクト: TianYiJT/FreedomAI
        public void DoRun(SimpleAI sAI, string code)
        {
            if (code == "Die")
            {
                sAI.Destroy();
            }
            glassObject go = (glassObject)sAI.mCharacter;

            if (go.timer < 1.0f)
            {
                go.timer += Time.deltaTime;
                return;
            }
            SimpleAI[] SimpleAIs = SimpleAISetSingleton.getInstance().GetComponent <SimpleAISet> ().FindAIsWithRiaus(sAI.mAIRT.transform.position, 5.0f, 1 << LayerMask.NameToLayer("Default"), "Tree");
            go.timer = 0.0f;

            go.mHp -= 50;
            for (int i = 0; i < SimpleAIs.Length; i++)
            {
                TreeObject to = (TreeObject)SimpleAIs [i].mCharacter;
                if (to.mTempLife > 1500)
                {
                    go.mHp += (int)(to.mTempLife / 50.0f);
                }
            }
        }
コード例 #4
0
        public void RePairRTObject()
        {
            if (mRTObjectSet != null)
            {
                for (int i = 0; i < mRTObjectSet.Length; i++)
                {
                    GameObject.Destroy(mRTObjectSet [i].mAIRT);
                    SimpleAISetSingleton.getInstance().GetComponent <SimpleAISet> ().Delete(mRTObjectSet [i]);
                }
            }

            mRTObjectSet = new SimpleAI[mGAObjectSet.Length];

            for (int i = 0; i < mRTObjectSet.Length; i++)
            {
                mRTObjectSet [i] = new SimpleAI();
                mRTObjectSet [i].Init(mRTObjectRunner, mRTObjectJudger, mPrefab, mPlayer, mGAObjectSet[i].mPosition);
                mRTObjectSet [i].mSimpleAIDestroyer = mRTObjectDestroyer;
                mRTObjectSet [i].mSimpleAIRepairer  = mSimpleAIRePairer;
                mRTObjectSet [i].mType      = mRTType;
                mRTObjectSet [i].mCharacter = mGAObjectSet [i];
                mRTObjectSet [i].mSimpleAIRepairer.DoRePair(mRTObjectSet[i]);
                mRTObjectSet [i].mName = mRTType + "index" + i;
            }
        }
コード例 #5
0
ファイル: DefaultZoology.cs プロジェクト: TianYiJT/FreedomAI
 public void DoRePair(SimpleAI sAI)
 {
     //glassObject tgo = sAI.mCharacter;
     sAI.mAIRT.GetComponent <MeshRenderer> ().material.color = Color.Lerp(Color.yellow, Color.green, ((glassObject)sAI.mCharacter).mColor);
     //sAI.mAIRT.GetComponent<MeshRenderer> ().material.color = Color.Lerp(((glassObject)sAI.mCharacter).mColor,Color.yellow,(((glassObject)sAI.mCharacter).mHeight-1.0f)/1.5f);
     sAI.mAIRT.transform.localScale = new Vector3(((glassObject)sAI.mCharacter).mAllhp / 2000.0f, ((glassObject)sAI.mCharacter).mHeight, ((glassObject)sAI.mCharacter).mAllhp / 2000.0f);
     sAI.mAIRT.tag = "Glass";
 }
コード例 #6
0
ファイル: DefaultZoology.cs プロジェクト: TianYiJT/FreedomAI
 public string DoJudge(SimpleAI pSimpleAI)
 {
     if (((glassObject)pSimpleAI.mCharacter).mHp < 0)
     {
         return("Die");
     }
     else
     {
         return("Idle");
     }
 }
コード例 #7
0
ファイル: DefaultZoology.cs プロジェクト: TianYiJT/FreedomAI
 public string DoJudge(SimpleAI pSimpleAI)
 {
     if (((TreeObject)pSimpleAI.mCharacter).mTempLife < 0)
     {
         return("Die");
     }
     else
     {
         return("Idle");
     }
 }
コード例 #8
0
ファイル: DefaultZoology.cs プロジェクト: TianYiJT/FreedomAI
 public void DoRePair(SimpleAI sAI)
 {
     sAI.mAIRT.transform.localScale = new Vector3(1 + ((CowObject)sAI.mCharacter).mStrongRate, 1 + ((CowObject)sAI.mCharacter).mStrongRate, 1 + ((CowObject)sAI.mCharacter).mStrongRate);
     if (((CowObject)(sAI.mCharacter)).Type)
     {
         sAI.mAIRT.GetComponent <MeshRenderer> ().material.color = Color.red;
     }
     else
     {
         sAI.mAIRT.GetComponent <MeshRenderer> ().material.color = Color.blue;
     }
 }
コード例 #9
0
 // add a object new
 public void Add(SimpleAI pSimpleAI)
 {
     GAObject[] tGAObjects = new GAObject[mGAObjectSet.Length + 1];
     SimpleAI[] tSimpleAIs = new SimpleAI[mRTObjectSet.Length + 1];
     for (int i = 0; i < mGAObjectSet.Length; i++)
     {
         tGAObjects [i] = mGAObjectSet [i];
         tSimpleAIs [i] = mRTObjectSet [i];
     }
     tGAObjects [tGAObjects.Length - 1] = pSimpleAI.mCharacter;
     tSimpleAIs [tGAObjects.Length - 1] = pSimpleAI;
     mGAObjectSet = tGAObjects;
     mRTObjectSet = tSimpleAIs;
 }
コード例 #10
0
ファイル: DefaultZoology.cs プロジェクト: TianYiJT/FreedomAI
 public string DoJudge(SimpleAI sAI)
 {
     if (((CowObject)sAI.mCharacter).mTempLife < 0)
     {
         return("Die");
     }
     else
     {
         if ((int)(((CowObject)sAI.mCharacter).timer / 8.0f) % 2 == 0)
         {
             return("FindFood");
         }
         else
         {
             return("Round");
         }
     }
 }
コード例 #11
0
        // destroy a AI should be delete in GAPopulation
        public void Delete(SimpleAI pSimpleAI)
        {
            GAObject[] tGAObjects = new GAObject[mGAObjectSet.Length - 1];
            SimpleAI[] tSimpleAIs = new SimpleAI[mRTObjectSet.Length - 1];
            int        index      = 0;

            for (int i = 0; i < mGAObjectSet.Length; i++)
            {
                if (mRTObjectSet [i] == pSimpleAI)
                {
                    continue;
                }
                tGAObjects [index] = mGAObjectSet [i];
                tSimpleAIs [index] = mRTObjectSet [i];
                index++;
            }
            mGAObjectSet = tGAObjects;
            mRTObjectSet = tSimpleAIs;
//			Debug.Log (mRTObjectSet.Length);
        }
コード例 #12
0
ファイル: DefaultZoology.cs プロジェクト: TianYiJT/FreedomAI
        public void DoRePair(SimpleAI sAI)
        {
            TreeObject to = (TreeObject)sAI.mCharacter;

            sAI.mAIRT.transform.localScale = sAI.mAIRT.transform.localScale * (to.mStrongRate + 1.0f);
        }
コード例 #13
0
ファイル: DefaultZoology.cs プロジェクト: TianYiJT/FreedomAI
 public void DoDestroy(SimpleAI sAI)
 {
 }
コード例 #14
0
ファイル: DefaultZoology.cs プロジェクト: TianYiJT/FreedomAI
        public void DoRun(SimpleAI sAI, string code)
        {
            string s = code;

            ((CowObject)sAI.mCharacter).timer += Time.deltaTime;
            if (((int)((CowObject)sAI.mCharacter).timer) - ((CowObject)sAI.mCharacter).lastTime > 0)
            {
                ((CowObject)sAI.mCharacter).mTempLife -= 30 + (int)(10 * ((CowObject)sAI.mCharacter).mStrongRate);
                ((CowObject)sAI.mCharacter).lastTime   = ((int)((CowObject)sAI.mCharacter).timer);
            }
            if (code == "Die")
            {
                sAI.Destroy();
            }
            else if (code == "Round")
            {
                ((CowObject)sAI.mCharacter).mGlassTarget = null;
                if (((CowObject)sAI.mCharacter).RoundTimer > 0.0f && (((CowObject)sAI.mCharacter)).RoundTarget != Vector3.zero)
                {
                    float distance = Vector3.Distance(sAI.mAIRT.transform.position, ((CowObject)sAI.mCharacter).RoundTarget);
                    if (distance > 1.5f)
                    {
                        sAI.GetComponent <AIMove> ().mDirection   = ((CowObject)sAI.mCharacter).RoundTarget - sAI.mAIRT.transform.position;
                        sAI.GetComponent <AIMove> ().mDirection.y = 0.0f;
                        sAI.GetComponent <AIMove> ().mVelocity    = ((CowObject)sAI.mCharacter).mVelocity;
                    }
                    else
                    {
                        sAI.GetComponent <AIMove> ().mVelocity = 0.0f;
                    }
                    ((CowObject)sAI.mCharacter).RoundTimer -= Time.deltaTime;
                }
                else
                {
                    ((CowObject)sAI.mCharacter).RoundTimer  = 4.5f;
                    ((CowObject)sAI.mCharacter).RoundTarget = sAI.GeneratePos + new Vector3(Random.Range(-10, 10), 0, Random.Range(-10, 10));
                }
            }
            else
            {
                ((CowObject)sAI.mCharacter).RoundTarget = Vector3.zero;
                ((CowObject)sAI.mCharacter).RoundTimer  = 0.0f;
                if (((CowObject)sAI.mCharacter).mGlassTarget == null || ((CowObject)sAI.mCharacter).mGlassTarget.mAIRT == null)
                {
                    SimpleAI[] SimpleAIs  = SimpleAISetSingleton.getInstance().GetComponent <SimpleAISet> ().FindAIsWithRiaus(sAI.mAIRT.transform.position, 9.5f, 1 << LayerMask.NameToLayer("Default"), "Glass");
                    int        startIndex = Random.Range(0, SimpleAIs.Length);
                    bool       Type       = ((CowObject)sAI.mCharacter).Type;
                    for (int i = startIndex; i < SimpleAIs.Length; i++)
                    {
                        float f2 = ComputeGreen(SimpleAIs[i]);
                        if (f2 > 0.5f && f2 < 0.75f)
                        {
                            f2 += 0.25f;
                        }
                        else if (f2 < 0.5f && f2 > 0.25f)
                        {
                            f2 -= 0.25f;
                        }

                        if (Type)
                        {
                            f2 = f2;
                            if (f2 < 0.15f)
                            {
                                f2 -= 0.11f;
                            }
                        }
                        else
                        {
                            f2 = 1.0f - f2;
                            if (f2 < 0.15f)
                            {
                                f2 -= 0.11f;
                            }
                        }

                        if (Random.Range(0.0f, 1.0f) < f2)
                        {
                            ((CowObject)sAI.mCharacter).mGlassTarget = SimpleAIs [i];
                            //Debug.Log (SimpleAIs[i].mAIRT.GetComponent<MeshRenderer>().material.color+"  "+Type.ToString());
                            break;
                        }
                    }
                    s += "Finding";
                }
                else
                {
                    float distance = Vector3.Distance(sAI.mAIRT.transform.position, ((CowObject)sAI.mCharacter).mGlassTarget.mAIRT.transform.position);
                    if (distance > 1.5f)
                    {
                        sAI.GetComponent <AIMove> ().mDirection   = ((CowObject)sAI.mCharacter).mGlassTarget.mAIRT.transform.position - sAI.mAIRT.transform.position;
                        sAI.GetComponent <AIMove> ().mDirection.y = 0.0f;
                        sAI.GetComponent <AIMove> ().mVelocity    = ((CowObject)sAI.mCharacter).mVelocity;
                    }
                    else
                    {
                        sAI.GetComponent <AIMove> ().mVelocity = 0.0f;
                        if (((CowObject)sAI.mCharacter).EatTimer < 1.0f)
                        {
                            ((CowObject)sAI.mCharacter).EatTimer += Time.deltaTime;
                        }
                        else
                        {
                            ((CowObject)sAI.mCharacter).mTempLife += 40;
                            ((CowObject)sAI.mCharacter).mTempLife  = Mathf.Min(((CowObject)sAI.mCharacter).mTempLife, ((CowObject)sAI.mCharacter).mLife);
                            ((glassObject)((CowObject)sAI.mCharacter).mGlassTarget.mCharacter).mHp -= 120;
                        }
                    }
                }
            }
        }
コード例 #15
0
ファイル: DefaultZoology.cs プロジェクト: TianYiJT/FreedomAI
 public void DoDestroy(SimpleAI sAI)
 {
     SimpleAISetSingleton.getInstance().GetComponent <SimpleAISet> ().Delete(sAI);
     GameObject.Destroy(sAI.mAIRT);
     GAPopulation.allDic [sAI.mType].Delete(sAI);
 }
コード例 #16
0
ファイル: SimpleAI.cs プロジェクト: TianYiJT/FreedomAI
 public void Delete(SimpleAI pSimpleAI)
 {
     LastFrameRemove.Add(pSimpleAI);
 }