«یا اللهُ یا رَبِّ یا حَیُّ یا قَیّوم یا ذَالجَلالِ وَ الاکرام اَسئَلُکَ بِاسمِکَ اَلعَظیم اَلاَعظَم اَن تَرزُقَنی رِزقاً حَلالاً طَیِّباً بِرَحمَتِکَ الواسِعَه یا اَرحَمَ الرّاحِمِین.»
گیم اور _ بازیسازی با unity + مطالب متفرقه

گیم اور _ بازیسازی با unity + مطالب متفرقه

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

به نام خدا
--
گروه قدیم ما promakers.ir یا پرومیکرز بود که بالای هزار اموزش توش ساخته بودم به اسم sajjad3011 ولی حیف ادمین سایتش عوض کرد
حالا سوالی بود کاری بود این شمارمه

قدیمیا دلم براتون تنگ شده... فقط معرفی کنید توی پیامک یا تماس یاد بیارید.
اگه جواب ندادم شاید موقعیت نداشته باشم.
بگید توی پیام از بچه های پرومیکرز هستید.

---
سوالی بود بذارید
نظر خصوصی نذارید
پاسخش سخته
دوست داشتید شماره بذارید تو واتساپ یا ایتا یا .... گروه بزنیم.
09358077198

بایگانی
پیوندها

منبع:gameover.blog.ir


نویسنده :alimka
منبع:http://www.crydev.ir/thread79.html

برای اینکه بتونیم از این کد ها استفاده کنیم ابتدا باید دوتا شی ایجاد کنیم . مثلا دو مکعب ایجاد می کنیم به نام Enemy و Player.

۱۰ نظر موافقین ۰ مخالفین ۰ ۰۵ مهر ۹۴ ، ۱۹:۲۷
مدیرکل
منبع :gameover.blog.ir

این پکیج حدود 245 مگابایت هست .
بسیار حجیم و عالی جهت ساختر کاراکتر اول شخص و سوم شخص می باشد . پکیج دارای سه دموی متفاوت به همراه آموزش بوده و می توانید از آن در ساخت کاراکتر خود استفاده کنید .
[تصویر: character_system.jpg]
یه مدل نینجا توش هست و شاید یه سری مدل دیگه که بشه چایگزین کرد .
و یه سری انیمیشن واسه پراز و راه رفتن و افت زدن از بغل و یه rigid body واسه فیزیک و یه سری اسکریپت دیگه داره واسه پرش و شاید شنا کردن و .... (من شنا کردن و ... رو نتونستم بیابم happy )

روش کارش سادست. پکیج رو با ماوس بکشید توی یونیتی import کنید و پس از تایید و ایمپورت کامل کافیه توی اون کادر جستجو در پنجره ی asset ها در project کلمه ی ninja رو جستجو کنید و مدل رو که پیدا کرد بکشید بیارید توی صحنه یا Hierarchy به بازیتون اضافه کنید.
یک plane هم با رنگ سبز(دلخواه) ایجاد کنید واسه زمین. و یک cube هم دوست داشتید بذارید که بتونید پرش رو تست بگیرید.
همه چی تموم بازی رو اجرا کنید.
با z پرواز کنید و با z فرورد بیاید.(چند تا z شت سر هم بزنید ارتفاع رو زیاد می کنه) و وقتی z رو بعد از چند لحظه می زنید سقوط می کنه و اگه از ارتفاع بیفتید روی زمین حالت زمین خوردن و انیمیشن مربوط رو به خوبی اجرا می کنه براتون.
با کلیک ماوس و راست کلیک می تونید لگد و مشت بزنید و الی آخر.

[تصویر: charSys.jpg]

خود پکیج هم می خواید توی اینترنت هست .
من قبلا از http://www.myunity.ir گرفته بودمش ولی الان دیگه اونجا نیست انگار. از هر جا پیدا کردید دانلود کنید.
ولی در کل بگم اینم یه نمونه ی ساده هست.
بعدا انشاءا... با برنامه نویسی و اسکریپت سازی بتونید مسائل پیچیده تری رو توی بازی های یونیتی خودتون حل کنید.
مثلا من توی سایت های دیگه ای هم سر زدم دیدم اسکریپت های فیزیک یا vehicle واسه یه ماشین رو یکی از بچه های سایت persian-designers فک کنم خیلی خوب ساخته بود و ماشینش خیلی خوب پستی و بلندی ها رو می رفت و گرافیکش هم به جز زمین بد نبود big grin
با X میشینه و دوباره پا میشه و با C شمشیر بر می داره و دوباره میذاره سر جاش(اگه دوباره x بزنید) .
اگه دوبار D بزنید از راست اوفت میزنه و اگه دوباره A بزنید از چپ. اگه دوبار W بزنید از جلو افت میزنه و اگه دوبار S بزنید از عقب افت میزنه.big grin
اینم یکی از نمونه کارهام کلیپشو ببینید با کیفیت کم گذاشتم با حجم 900 کیلوبایت بذار همه بتونن دانلود کنن:
http://s5.picofile.com/file/8127041492/charSysUnity_mp4_sajjad3011.zip.html
از zip در بیرید mp4 هست
۲ نظر موافقین ۰ مخالفین ۰ ۰۵ مهر ۹۴ ، ۱۷:۵۰
مدیرکل
منبع :gameover.blog.ir
نکته:محور Y یعنی خود محور  به سمت بالا و پایین هست و چرخش حول این محور به معنی چرخش به چپ و راست هست.
دوربین رو بذارید پشت player و در زیرشاخه player.
سپس اسکریپت زیر رو بدید به Player .

using UnityEngine;
using System.Collections;

public class MYCLASSNAME : MonoBehaviour {
float Xrotatespeed=10;
float Yrotatespeed=10;

void  Start (){

}

void  Update (){
    transform.Rotate(new Vector3 (0,Input.GetAxis("Mouse X")*Xrotatespeed,0));     
    //transform.Rotate(new Vector3 (Input.GetAxis("Mouse Y")*Yrotatespeed*-1,0,0));
    print(transform.rotation.eulerAngles); 
}
}

اسکریپت فوق به زبان سیشارپ هست به جای MYCLASSNAME اسم اسکریپت رو بذارید.

اسکریپت معادل به زبان جاوااسکریپت :

var Xrotatespeed:float=10;
var Yrotatespeed:float=10;

function Start () {

}

function Update () {
    transform.Rotate(new Vector3 (0,Input.GetAxis("Mouse X")*Xrotatespeed,0));     
    //transform.Rotate(new Vector3 (Input.GetAxis("Mouse Y")*Yrotatespeed*-1,0,0));
    print(transform.rotation.eulerAngles); 
}
معمولا اسکریپت های کوچکی که توی وبلاگ می ذاریم رو سعی می کنیم خودمون طراحی کنیم.نظر یاتون نره.موفق باشید.
۰ نظر موافقین ۰ مخالفین ۰ ۰۵ مهر ۹۴ ، ۱۷:۴۳
مدیرکل

منبع:gameover.blog.ir
یه آرایه از گیم ابجکت تعریف کن. بعدش توی  inspector اندازه رو توی پارامتر size تعیین کن مثلا 3 بده تا سه تا ورودی بهت بده. بعدش سه تا گیم ابجکت empty بساز توی hierarchy و اونا رو بکش بنداز روی ورودی ها. سپس توی صحنه پوزیشن(موقعیت) این empty game object ها رو  هرجور می خوای تنظیم کن. بعدش توی کد سیشارپ که به ماشین میدی کد حرکت مثل این رو بذار:

توی update بگو:

 اگه i=2 بود بره به پوزیشن 2 :

transform.position = Vector2.Lerp (transform.position, pos2,10* Time.deltaTime); 

وگرنه اگه i=3 بود بره به پوزیشن  3:

transform.position = Vector2.Lerp (transform.position, pos3,10* Time.deltaTime); 

وگرنه اگه i=1 بود بره به پوزیشن  1:

transform.position = Vector2.Lerp (transform.position, pos1,10* Time.deltaTime);

می تونی مقدار اولیه i رو توی تابع start برابر 1 بگیری.

توی کد برخورد با پوزیشن 1 مقدار i رو 2 کن

توی کد برخورد با پوزیشن 2 مقدار i رو 3 کن

توی کد برخورد با پوزیشن 3 مقدار i رو 1 کن.

--

روی کدها خوب فکر کنید ببینید چی گفتم. اگه موفق به نوشتن کد نشدید بگید براتون بسازم.
---
یه مثال هم قبلا زده بودم با برنامه اینو ببینید :

http://gameover.blog.ir/1394/05/30/%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%DB%8C%DA%A9-%D9%85%D9%88%D8%AC%D9%88%D8%AF-%D9%87%D9%88%D8%B4%D9%85%D9%86%D8%AF-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AA%DA%A9%D9%86%DB%8C%DA%A9-NPC-%D9%88-waypints-%D8%AF%D8%B1-%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C
http://s5.picofile.com/file/8153960892/wayPints_1.jpg
۰ نظر موافقین ۰ مخالفین ۰ ۰۵ مهر ۹۴ ، ۰۲:۳۳
مدیرکل
منبع:gameover.blog.ir
۰ نظر موافقین ۰ مخالفین ۰ ۰۴ مهر ۹۴ ، ۲۳:۲۸
مدیرکل
منبع:gameover.blog.ir

روش اول:

  Invoke("DoSomething", 10);//this will happen after 10 seconds



روش دوم:

//gameover.blog.ir
StartCoroutine(ExecuteAfterTime(10));

IEnumerator ExecuteAfterTime(float time)
 {
     yield return new WaitForSeconds(time);
 
     // Code to execute after the delay
 }




این تابع برای اجرای یک تابع بکار می ره.و اگه ازش استفاده کنیم با اسفاده از دستور yield می تونیم در هر نقطه از برنامه کار رو متوقف کنیم.وقتی coroutine ریسام میشه(resume به معنی ادامه دادن یا از سر گرفتن)دستور yield مقداری رو برگشت می ده. Coroutines در مواقعی که در حال مدلسازی رفتاری روی چند فریم هستیم،عالی است. Coroutine ها به طور مجازی سربار اجرایی(performance overhead) ندارند.تابع StartCoroutineمستقیما برگشت(return) داده می شود،همچنین می توانید نتیجه را yieldکرد.این باعث میشه که تابع صبر کنه تا زمانی که coroutine کارش تمام بشه بعدش دستورات بعدی رو از سر بگیره.

البته توی javascript نیازی به استفاده از StartCoroutine نیست.چون خود کامپایلر(compiler) این کار رو برای شما انجام میده.اما توی کد C sharp باید از StartCoroutine استفاده کنیم.


مثال یک :

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Start() {
        print("Starting " + Time.time);
        StartCoroutine(WaitAndPrint(2.0F));
        print("Before WaitAndPrint Finishes " + Time.time);
    }
    IEnumerator WaitAndPrint(float waitTime) {
        yield return new WaitForSeconds(waitTime);
        print("WaitAndPrint " + Time.time);
    }
}

مثال دو:
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    IEnumerator Start() {
        print("Starting " + Time.time);
        yield return StartCoroutine(WaitAndPrint(2.0F));
        print("Done " + Time.time);
    }
    IEnumerator WaitAndPrint(float waitTime) {
        yield return new WaitForSeconds(waitTime);
        print("WaitAndPrint " + Time.time);
    }
}


۰ نظر موافقین ۰ مخالفین ۰ ۰۴ مهر ۹۴ ، ۲۳:۰۵
مدیرکل
منبع:gameover.blog.ir

ارسال داده های فرم به وب سرور :

کد سیشارپ:

(اسم اسکریپت باید طبق کلاس داخلی، WWWFormImage  باشه.

using UnityEngine;
using System.Collections;

public class WWWFormImage : MonoBehaviour {

    public string screenShotURL= "http://www.my-server.com/cgi-bin/screenshot.pl";

    // Use this for initialization
    void Start () {
        StartCoroutine(UploadPNG());
    }
    
    IEnumerator UploadPNG() {
        // We should only read the screen after all rendering is complete
        yield return new WaitForEndOfFrame();

        // Create a texture the size of the screen, RGB24 format
        int width = Screen.width;
        int height = Screen.height;
        var tex = new Texture2D( width, height, TextureFormat.RGB24, false );

        // Read screen contents into the texture
        tex.ReadPixels( new Rect(0, 0, width, height), 0, 0 );
        tex.Apply();

        // Encode texture into PNG
        byte[] bytes = tex.EncodeToPNG();
        Destroy( tex );

        // Create a Web Form
        WWWForm form = new WWWForm();
        form.AddField("frameCount", Time.frameCount.ToString());
        form.AddBinaryData("fileUpload", bytes, "screenShot.png", "image/png");

        // Upload to a cgi script
        WWW w = new WWW(screenShotURL, form);
        yield return w;
        if (!string.IsNullOrEmpty(w.error)) {
            print(w.error);
        }
        else {
            print("Finished Uploading Screenshot");
        }
    }
}
به متغیر screenShotURL آدرس صفحه ی دریافت کننده php یا ... رو بدید.


۰ نظر موافقین ۰ مخالفین ۰ ۰۴ مهر ۹۴ ، ۲۲:۴۲
مدیرکل
منبع:gameover.blog.ir
توی این فیلم با استفاده از پلاگین جانبی یاد می گیرید فایل json خروجی گرفته از spine رو ببرید توی یونیتی و انیمیشن رو اجرا کنید:

http://www.mediafire.com/download/xv159xd1rbcxxar/Importing_a_Spine_Animation_into_Unity3D_%255BYT-f22%255D%255Bx1umSQulghA%255D.mp4



اینم لینک پلاگین :
https://github.com/EsotericSoftware/spine-runtimes
بعد از باز کردن پوشه spine-unity رو ببرید توی یونیتی و به پوشه assets اضافه کنید. بقیه هم تو فیلم اموزش داده.
نظر یادتون نره.
۱ نظر موافقین ۰ مخالفین ۰ ۰۳ مهر ۹۴ ، ۱۶:۰۵
مدیرکل
منبع :gameover.blog.ir
تکستچرهایی که ابعاد اون ها توانی از 2 باشه(مثل 2،4،8،16،32،128 و الی آخر) رو می گن تکستچر اطلس.بهتره برای سرعت بهتر تکستچرهای اطلس بسازید . (مثلا توی فتوشاپ می تونید اندازه رو با ctrl+alt+i تنظیم کنید)اگه اطلس نسازید البته یونیتی خطا نمی ده ولی خودش مجبوره تبدیلات رو انجام بده.موفق باشید.
۱ نظر موافقین ۰ مخالفین ۰ ۰۳ مهر ۹۴ ، ۰۲:۲۴
مدیرکل
منبع:gameover.blog.ir
اسکریپت سیشارپ زیر رو بندازید روی ui->image ای که ساختید. کد زیر رو ببینید فکر کنید روش خودتون درک می کنید چطوری با event system کار کنید. من اومدم یه پیام ساده رو لاگ کردم وقتی روی image کلیک رو پایین می دیم همون بار اول پیام میده.
//EventSystem test for ui image in Unity
//Author:gameover.blog.ir
using
UnityEngine.EventSystems; using UnityEngine; using System.Collections; public class Example: MonoBehaviour { void Update () { if (Input.GetMouseButtonDown (0)) { EventSystem eventSystem = EventSystem.current; if (eventSystem.IsPointerOverGameObject ()) { Debug.Log ("mouse down"); }//if }//if }//Update }
اگه بخواید ماوس رو نگه دارید یه ضرب پیام رو لاگ کنه به جای Input.GetMouseButtonDown (0) از Input.GetMouseButton (0 استفاده کنید.
۲ نظر موافقین ۰ مخالفین ۰ ۰۳ مهر ۹۴ ، ۰۱:۱۵
مدیرکل

منبع :gameover.blog.ir

چرا بعضی اوقات وقتی دشمنو تکثیر میکنیم فقط رو یکشون عمل میکنه ؟
پاسخ :
دلیلش اینه که متغیرها رو باید از نوع static تعریف کنیم.متغیرهایی از نوع static تعریف می شن آخرین مقدار خودشون رو نگه می دارن.
وقتی ما یک دشمن رو instantiate می کنیم اگه بخوایم همه ی دشمن ها عین هم عمل کنن و مثلا به طور هوشمند دنبالمون بیان یا به حالت idle برن باید نوع متغیری که در منطق یا logic خودمون ازش اتفاده می کنیم رو از نوع static تعریف کنیم.

۰ نظر موافقین ۰ مخالفین ۰ ۰۲ مهر ۹۴ ، ۲۲:۳۲
مدیرکل

منبع:gameover.blog.ir

برای اینکار از کلاس Input استفاده میشه و تعداد(count) انگشت ها رو هم میشه شمرد.
قبل از هرچیزی باید بررسی کنیم که دستگاه ما آیا از multi touch ساپورت می کنه یا نه.

bool supportsMultiTouch = Input.multiTouchEnabled;
print("MultiTouchSupport : " + supportsMultiTouch);


این آموزش فرضش اینه که موبایل لمسی شما از مالتی تاچ حمایت می کنه.برای گوشی های single-touch کافیه توی هر تایم یک تاچ رو چک کنیم.

مثال زیر همه ی تاچ(لمس) ها و موقعیت اونا رو نمایش تشخیص می ده :
void Update ()

            {

                int nbTouches = Input.touchCount;


                if(nbTouches > 0)

                {

                    print(nbTouches + " touch(es) detected");


                    for (int i = 0; i < nbTouches; i++)

                    {

                        Touch touch = Input.GetTouch(i);


                        print("Touch index " + touch.fingerId + " detected at position " + touch.position);

                    }

                }

        }



Input.touchCount تعداد تاچ ها رو تشخیص می ده.
می تونیمبا یک loop و تکرار با استفاده از Input.GetTouch تمام لمس ها رو تشخیص بدیم.

هر ساختار Touch شامل یک fingerId هست که یک نمونه یا موجودیت(instance ) برای آن lifetime(زمان) را شناسایی می کند و این کار را ادامه می دهد تا اینکه تاچ (لمس) stop کند(متوقف شود) با این امکان می توان برای تخیص تاچ های یکسان در فریم های مختلف استفاده کرد.

با استفاده از touch.position می تونیم مختصات ناحیه ی لمس شده روی screen(صفحه) رو تشخیص بدیم.

نکته بسیار مهم : یادتون باشه،مبداء بردار لمسی در پایین ترین گوشه ی سمت چپ صفحه می باشد.

متد دیگه برای تشخیص تاچ ها ، Input.touches است که یک لیست از ابجکت های لمس شده ی صفحه رو به ما میده.

با اینکه متد اول باید استفاده شود همانند Input.touches متغیرهای موقت و ممکن است کارایی بازی را کاهش دهند.

داده های ورودی ، دقیقا قبل ار تابع Update()، در هر فریم refresh می شوند.

به طوری که در آن شما باید تمام کدهای لازم مدیریت ورودی(input-management logic)را در آن قرار دهید.

انجام این کار اگر در تابع FixedUpdate انجام بشه،جلوی catching (یا خطایابی) داده های ورودی کاربر رو از ما می گیره.زیرا FixedUpdate اگرچه در گام های مختلف ولی در هر فریم از زمان اجرا نمیشه.

Touch Phases(فاز های لمسی):
در کد زیر با استفاده از خصوصیت phase شروع و پایان و لحظه ی تاچ را تشخیص می دهیم :
void Update ()
        {
           int nbTouches = Input.touchCount;

           if(nbTouches > 0)
           {
              for (int i = 0; i < nbTouches; i++)
              {
                 Touch touch = Input.GetTouch(i);

                 TouchPhase phase = touch.phase;

                 switch(phase)
                 {
                    case TouchPhase.Began:
                       print("New touch detected at position " + touch.position + " , index " + touch.fingerId);
                       break;
                    case TouchPhase.Moved:
                       print("Touch index " + touch.fingerId + " has moved by " + touch.deltaPosition);
                       break;
                    case TouchPhase.Stationary:
                       print("Touch index " + touch.fingerId + " is stationary at position " + touch.position);
                       break;
                    case TouchPhase.Ended:
                       print("Touch index " + touch.fingerId + " ended at position " + touch.position);
                       break;
                    case TouchPhase.Canceled:
                       print("Touch index " + touch.fingerId + " cancelled");
                        break;
                    }
                }
           }
        }

زمانی که کاربر در کشیدن انگشت خود(swipping) بر روی صفحه نمایش است،ما به جای موقعیت واقعی،تغییرات دلتای موقعیت(position) را دنبال می کنیم.این برای زمانی مفید است که عمل درگ(Drag=کشیدن و انداختن چیزی با ماوس یا لمس)را انجام می دهیم.


سپس با استفاده از deltaTime سرعت حرکت touch input رو محاسبه می کنیم :
float touchSpeed = touch.deltaPosition.magnitude / touch.deltaTime;

اگه اشتباهی رخ بده تاچ کنسل(cancel) می شه.به عنوان مثال هنگامی که یک منطقه بزرگ در برابر صفحه نمایش فشرده یا تاچ های بیش از آنچه دستگاه ساپورت می کنه انجام بشه.برای تشخیص موقعیت شروع لمس صفحه توسط کاربر از "Began" استفاده می کنیم.سپس می تونیم یک ray(اشعه) رو از موقعیت ورودی با اتفاده از دوربین،cast(پرتاب) و با استفاده از Raycast collision اشیایی رو که در امتداد اشعه هستند چک کنیم.
void Update ()
            {
                int nbTouches = Input.touchCount;

                if(nbTouches > 0)
                {
                    for (int i = 0; i < nbTouches; i++)
                    {
                        Touch touch = Input.GetTouch(i);

                        if(touch.phase == TouchPhase.Began)
                        {
                            Ray screenRay = Camera.main.ScreenPointToRay(touch.position);

                            RaycastHit hit;
                            if (Physics.Raycast(screenRay, out hit))
                            {
                    print("User tapped on game object " + hit.collider.gameObject.name);
                                handleTap(hit.collider.gameObject);
                            }
                        }

                    }
                }
        }


در بعضی مواقع می خوایم دوبار لمس سریع کاربر رو بررسی کنیم.برای مثال یه وقتی می خوایم وقتی کاربر با انگشت به صفحه ضربه(tap) زد Player راه بره و اگه دوبار سریع ضربه زد(double tap) کاراکتر Player با سرعت راه بره.
void Update ()
            {
                int nbTouches = Input.touchCount;

                if(nbTouches > 0)
                {
                    for (int i = 0; i < nbTouches; i++)
                    {
                        Touch touch = Input.GetTouch(i);

                        if(touch.phase == TouchPhase.Began)
                        {
                            if(touch.tapCount >= 2)
                            {
                                Run();
                            }
                            else
                            {
                                Walk();
                            }
                        }

                    }
                }
                else
                {
                    StopMoving();
                }
        }

وقتی touch ما Begin می کنه(وقتی لمس آغاز میشه)، player با تک ضرب انگشت حرکت و با چند ضرب شروع به دویدن می کنه.
اگه هم هیچ تاچ یا لمسی صورت نگیره game character متوقف می شه.
زمانیکه متدهای مختلف مثل Walk را اجرا می کنیم شما همچنین بررسی می کنید کاربر در حال حاضر در حال راه رفتن است یا خیر.

نکته: بعضی اوقات unity نمی تونه لمس های سریع رو درست تشخیص بده.(سعی کنید یادتون باشه)
۲ نظر موافقین ۰ مخالفین ۰ ۰۲ مهر ۹۴ ، ۲۲:۲۸
مدیرکل
منبع : gameover.blog.ir
۰ نظر موافقین ۰ مخالفین ۰ ۰۲ مهر ۹۴ ، ۲۲:۰۶
مدیرکل
منبع :gameover.blog.ir

How to calculate a new position having angle and distance?

کد اول:
 var x = dist * cos(angle * Mathf.Deg2Rad);
 var y = dist * sin(angle * Mathf.Deg2Rad);
 var newPosition = currentPosition;
 newPosition.x += x;
 newPosition.y += y;


کد معادل:

var q = Quaternion.AngleAxis(angle, Vector3.forward);
newPosition = currentPosition + q * Vector3.right * distance;

هر دو کد به زبان javascript بود. کد معادل سیشارپ هم خیلی ساده هست دیگه var نداره و نوع x و y و newPosition و q رو قبل از اسمشون میاریم.

نکته: فاصله/distance همون شعاع/radius هست.

منبع :
http://answers.unity3d.com/questions/491719/how-to-calculate-a-new-position-having-angle-and-d.html

موفق باشید.

۰ نظر موافقین ۰ مخالفین ۰ ۰۲ مهر ۹۴ ، ۱۹:۳۵
مدیرکل

 منبع :gameover.blog.ir

تو این سایت می تونید آنلاین نقاشی کنید. بعدش save رو بزنید و لینک رو بدید به دوستاتون

http://www.sketchtoy.com

۰ نظر موافقین ۰ مخالفین ۰ ۰۲ مهر ۹۴ ، ۰۲:۱۱
مدیرکل
۰ نظر موافقین ۰ مخالفین ۰ ۰۲ مهر ۹۴ ، ۰۱:۵۱
مدیرکل
منبع:gameover.blog.ir
با این سورس می تونید دیتابیس یا فایل رو از لینک آنلاین دانلود کنید:

http://www.mediafire.com/download/5n31g677onxh2iu/HttpUtils2_db+downloader+online.zip


۰ نظر موافقین ۰ مخالفین ۰ ۰۲ مهر ۹۴ ، ۰۱:۵۰
مدیرکل

منبع:gameover.blog.ir

با تشکر از سجاد

این متد برای قطع انیمیشن های قبلی و سوئیچ بدون شرط (بدون condition های تعریف شده در پنجره animatior برای انتقال یا transision ها) بکار می رود. برای مثال ممکنه در پنجره Animator روی خطوط انتقال بین انیمیشن ها شرط گذاشته باشیم که مثلا فلان متغیر اگه مقدارش فلان چیز بود اگه روی انیمیشن 1 بود بره به انیمیشن 2 .

اما با استفاده از crossFade در هر وضعیتی که باشیم و هر انیمیشنی که داره اجرا میشه بدون هیچ شرطی قطع می شه و به صورت آنی و فوری سوئیچ میشه روی انیمیشن دلخواه.

مثال :

    Public AnimatorPlayerAnimator;
        if(Input.GetMouseButtonDown(1))
        {
        PlayerAnimator.CrossFade("Fire",1);
        }
        else
        {
        PlayerAnimator.CrossFade("Idle",1);
        }
      در مثال فوق متغیر anim از نوع Animator تعریف شد و چون public هست در inspector باید کامپوننت Animator رو بکشیم بندازیم روش.شرط اول می گه اگه کلیک ماوس پایین بود انیمیشن Fire اجرا بشه وگرنه انیمیشن Idle.


      stateName: اسم state ای که توی پنجره Animator controller اضافه کردیم.

      transitionDuration:مدت زمان انتقال یا سوئیچ به انیمیشن.

      normalizedTime: زمان شروع انیمیشن مقصد که به آن سوئیچ می کنیم بوده ومقدارش بین 0 و 1 است.
      این مقدار زمان نرمال source state (وضعیت ابتدایی)است.اگه هیچ مقداری به این پارامتر ندیم normalizedTime تنظیم می شود یا مقدار normalizedTime منفی بی نهایت(NegativeInfinity) شناور (float) فرض می شود این مقدار پیشفرض رو با float.NegativeInfinity معرفی می کنیم و وضعیت اگر در حال اجرا نباشد از اول play می شود.(یا از زمان جاری اجرا و هیچ Transition یا سوئیچی بین انیمیشن ها اتفاق نمی افتد).

      layer: اسم لایه ای که شامل انیمیشن مقصد هست که قرار است به آن سوئیچ کنیم .اگه مقدار لایه خالی باشد لایه منفی یک(-1) فرض می شود (منفی یک به معنی first state یا وضعیت اول با نام داده شده اجرا می شود یا هش(hash)اجرا خواهد شد.(hash اسم یک state به صورت درهم هست.حالا به چه دردی میخوره)

      stateNameHash: هش وضعیت(state hash) از وضعیت مقصد است.اگر مقدار 0 بگیرد،انتقال یا transition به خودش بر می گردد(self)

      ما نمی توانیم وضعیت جاری را در یک synchronized layer (لایه ی همگام) تغییر دهیم بلکه باید آن را در لایه ی رجوع شده(Refrenced layer) تغییر دهیم.

      منبع :
      http://docs.unity3d.com/es/current/ScriptReference/Animator.CrossFade.html
      ۰ نظر موافقین ۰ مخالفین ۰ ۰۲ مهر ۹۴ ، ۰۰:۲۷
      مدیرکل

       منبع :gameover.blog.ir

      می تونید این کد رو توی Update بذارید:

      gameObject.transform.position = Input.mousePosition;
      ۰ نظر موافقین ۰ مخالفین ۰ ۰۱ مهر ۹۴ ، ۱۳:۵۵
      مدیرکل

       منبع :gameover.blog.ir

      فکر کنم فقط بعضی هاشون انیمیشن دار هستن:

      http://tf3dm.com/3d-model/zombie-pack-5-zombies-fully-rigged-animated-5522.html

      http://tf3dm.com/3d-model/zombie-66495.html

      http://tf3dm.com/3d-model/romeo-zombie-84057.html

      http://tf3dm.com/3d-model/zombie-man-86116.html

      http://tf3dm.com/3d-model/engineer-zombie-96267.html

      http://tf3dm.com/3d-model/heavy-zombie-74177.html

      http://tf3dm.com/3d-model/soldier-zombie-69380.html

      http://tf3dm.com/3d-model/puo-53550.html

      http://tf3dm.com/3d-model/puo-80561.html

      http://tf3dm.com/3d-model/toon-zombie-41216.html

      http://tf3dm.com/3d-model/tf2-soldier-as-zombie-15511.html


      سگ زامبی:

      http://tf3dm.com/3d-model/zombie-dog-57394.html

      ۱ نظر موافقین ۰ مخالفین ۰ ۰۱ مهر ۹۴ ، ۱۱:۱۵
      مدیرکل
      using UnityEngine;
      using System.Collections;
      using UnityEngine.UI;
       
       
      public class SpriteTest : MonoBehaviour {
       
       
          public Image mySprite;
       
       
          void OnTriggerEnter()
          {
              Invoke("ActiveSprite",1);
          }
       
       
          void ActiveSprite()
          {
              mySprite.enabled = true;
          }
      }
      ۱ نظر موافقین ۰ مخالفین ۰ ۳۱ شهریور ۹۴ ، ۱۹:۰۰
      مدیرکل

      این گزینه نقش enabed رو بازی می کنه. اگه true باشه آیتم عمل می کنه و اگه false باشه آیتم عمل نمی کنه.

      معمولا در قسمت ui->canvas group یا اشیای زیرشاخه ی ui (واسط کاربری) در یونیتی 5 می تونید دکمه و کادر متن و عکس و ... رو به عنوان یوزر اینترفیس بسازید. و هر کدوم رو خواستید عمل نکنه گزینه ی interactable رو false کنید یا تیکشو بردارید.(توی inspector)

      http://s6.picofile.com/file/8213435050/interactable.jpg

      ۰ نظر موافقین ۰ مخالفین ۰ ۳۱ شهریور ۹۴ ، ۱۳:۳۹
      مدیرکل
      کپی:gameover.blog.ir
      این کلمه برای تعریف متغیرهایی بکار می ره که نوعشون رو نمی دونیم یا بر حسب مقدار می خوایم نوع اون رو مشخص کنیم.
      مثال:
      // i is compiled as an int 
      var i = 5;
      
      // s is compiled as a string 
      var s = "Hello";
      
      // a is compiled as int[] 
      var a = new[] { 0, 1, 2 };
      
      // expr is compiled as IEnumerable<Customer> 
      // or perhaps IQueryable<Customer> 
      var expr =
          from c in customers
          where c.City == "London" 
          select c;
      
      // anon is compiled as an anonymous type 
      var anon = new { Name = "Terry", Age = 34 };
      
      // list is compiled as List<int>                              
      var list = new List<int>();
      
      منبع :
      https://msdn.microsoft.com/en-us/library/bb384061.aspx


      ۱ نظر موافقین ۰ مخالفین ۰ ۳۱ شهریور ۹۴ ، ۰۲:۰۰
      مدیرکل

      منبع: gameover.blog.ir
      ۱ نظر موافقین ۰ مخالفین ۰ ۳۰ شهریور ۹۴ ، ۲۰:۰۲
      مدیرکل
      منبع: gameover.blog.ir


      اجرای یک فیلم در ابتدای بازی و از بین رفتن بعد از چند (در اینجا 10) ثانیه:
      اسکریپت زیر رو میندازیم روی یک plane.
      سپس یک فیلم کوتاه mp4 رو به پروژه اضافه می کنیم (به صورت movie texture توسط یونیتی تبدیلات انجام میشه خودکار)
      یادتون نره quick Time هم باید نصب باشه) .
      سپس فیلم رو می کشیم روی پارامتر a که از نوع MovieTexture تعریف کرده بودیم.
      حالا اجرا می کنیم

      کد PHP:
      //movieTexture.js
      //author:sajjad3011
      var MovieTexture;
      var 
      i:float=0;
       var 
      myTimer float 10.0;
      function 
      Start () {
       
      renderer.material.mainTexture a;
      a.Play();
      }
       
      function 
      Update () {

      if(
      myTimer && a.isPlaying){ 
      myTimer -= Time.deltaTime
      if(
      myTimer <= 0){Destroy(transform.gameObject); }
      }
      }
      //update 
      روی صحنه ی دلخواه میریم تا نمای خوبی داشته باشیم سپس دوربین رو انتخاب می کنیم و ctrl+shit+F می زنیم تا روی صحنه ی جاری set بشه.
      فیلم اجرا میشه و بعد از 10 واحد زمانی نابود میشه.
      بعدش می تونید هر عملی دوست داشتید انجام بدید.

      کد معادل سیشارپ:
      معادل سیشارپ:
      public MovieTexture a;
      float myTimer =10f;
      void Start(){
      renderer.material.mainTexture = a;
      a.Play();
      }
      void Update () {
      if(myTimer > 0 && a.isPlaying){ 
      myTimer -= Time.deltaTime; 
      if(myTimer <= 0){Destroy(transform.gameObject); 
      }
      }

      ۱ نظر موافقین ۰ مخالفین ۰ ۳۰ شهریور ۹۴ ، ۱۹:۵۰
      مدیرکل
      منبع: gameover.blog.ir
      با تشکر از sajjad3011

      نابود شدن گیم ابجکت با کلیک روی آن:

      کد :
      void Update (){
              if (
      Input.GetMouseButtonDown (0))
                  
      Destroy (transform.gameObject);

      حرکت گیم آبجکت به سمت بالا در زمان بین 2 الی 6 ثانیه:
      کد :
      using UnityEngine;
      using System.Collections;

      public class 
      harkat MonoBehaviour {
          public 
      float speed=0.01f;
          
      // Use this for initialization
          
      void Start () {
          
          }
          
          
      // Update is called once per frame
          
      void Update () {
              if(
      2<=Time.time && Time.time <=6)
              
      transform.position = new Vector2 (transform.position.xtransform.position.Time.time speed);
          }

      از حرکت ایستادن گیم آبجکت بعد از برخورد با شی دیگر:
      برای اینکه به هر دو ابجکت کامپوننت Collider می دهیم.

      نامرعی کردن گیم ابجکت در یونیتی/مخفی کردن یا invisible کردن گیم ابجکت در یونیتی:
      کد :
      GetComponent<Renderer> ().enabled false

      بردارهای حرکت در یونیتی:
      کد:
      Vector3.zero    خلاصش میشه Vector3(0, 0, 0).
      Vector3.one    خلاصش میشه Vector3(1, 1, 1).

      Vector3.down    خلاصش میشه Vector3(0, -1, 0).
      Vector3.up    خلاصش میشه Vector3(0, 1, 0).

      Vector3.forward    خلاصش میشه Vector3(0, 0, 1).
      Vector3.back    خلاصش میشه Vector3(0, 0, -1).

      Vector3.left    خلاصش میشه Vector3(-1, 0, 0).
      Vector3.right    خلاصش میشه Vector3(1, 0, 0).
      سیستم ضرب برداری هم در اینجا بحث شده قبلا :
      http://promakers.ir/showthread.php?tid=12123

      ۰ نظر موافقین ۰ مخالفین ۰ ۳۰ شهریور ۹۴ ، ۱۷:۰۰
      مدیرکل
      منبع: gameover.blog.ir

      اسکریپت حرکت به جایی که کلیک کردیم move2click در یونیتی:
      کد js :

      کد :
      // Click To Move script
      // Moves the object towards the mouse position on left mouse click
       
      var smooth:int=1; // Determines how quickly object moves towards position
       
      private var targetPosition:Vector3;
       
      function Update () {
          if(Input.GetKeyDown(KeyCode.Mouse0))
          {
              var playerPlane = new Plane(Vector3.up, transform.position);
              var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
              var hitdist = 0.0;
       
              if (playerPlane.Raycast (ray, hitdist)) {
                  var targetPoint = ray.GetPoint(hitdist);
                  targetPosition = ray.GetPoint(hitdist);
                  var targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
                  transform.rotation = targetRotation;
              }
          }
       
          transform.position = Vector3.Lerp (transform.position, targetPosition, Time.deltaTime * smooth);
      }
      اسکریپت بالا به زبون js هست.بندازید روی player.اجرا کنید. هرجا کلیک می کنید player میره اونجا.
      پارامتر smooth روی 1 تظیم شده.اگه مقدارش بیشتر بشه سرعت حرکت بیشتر میشه.
      نکته: اسکریپت فوق برای بازی های استراتژی از نمای کامل بالا کار نمی کنه)
      اسکریپت حرکت سه بعدی پلیر در یونیتی/اسکریپت کاراکتر کنترلر:

      این اسکریپت رو بدید به player .
      نکته: پلیر نباید کامپونتت rigid body داشته باشه.ضمنا یک کامپوننت character controller هم بدید به player.
      کد :

      #pragma strict
      
      function Start () {
      
      }
      private var moveDirection : Vector3 = Vector3.zero;
      function Update () {
         
       var speed=5;
       var jumpSpeed=5;
       var gravity=5;
              var controller : CharacterController = GetComponent(CharacterController);
              if (controller.isGrounded) {
                  // We are grounded, so recalculate
                  // move direction directly from axes
                  moveDirection = Vector3(Input.GetAxis("Horizontal"), 0,
                                          Input.GetAxis("Vertical"));
                  moveDirection = transform.TransformDirection(moveDirection);
                  moveDirection *= speed;
                  
                  if (Input.GetButton ("Jump")) {
                      moveDirection.y = jumpSpeed;
                  }
              }
              // Apply gravity
              moveDirection.y -= gravity * Time.deltaTime;
              
              // Move the controller
              controller.Move(moveDirection * Time.deltaTime);
          
      
      }
      اسکریپت حرکت دو بعدی player به چپ و راست در یونیتی:
      کد :
      //Player.Cs
      //move 2d player Left/Right Unity
      //Author:Sajjad3011
      using UnityEngine;
      using System.Collections;
      
      public class player : MonoBehaviour {
      
          private Animator animator;
          private int walkSpeed=5;
      
          private float xScale,yScale;
          private bool run;
      
          void Start () {
              animator = this.GetComponent<Animator> ();
              xScale = transform.localScale.x;
              yScale = transform.localScale.y;
      
          }
      
          void Update(){ 
              if (Input.GetKey(KeyCode.RightArrow)) {
                  run=true;
                  GetComponent<Rigidbody2D>().velocity=new Vector2(walkSpeed,GetComponent<Rigidbody2D>().velocity.y);
                  transform.localScale=new Vector2(xScale,yScale);
              }
              if (Input.GetKey (KeyCode.LeftArrow)) {
                  run=true;
                  GetComponent<Rigidbody2D>().velocity=new Vector2(-walkSpeed,GetComponent<Rigidbody2D>().velocity.y);
                  transform.localScale=new Vector2(-xScale,yScale);
              }
              if (Input.anyKey==false){
                  GetComponent<Rigidbody2D>().velocity=new Vector2(0,GetComponent<Rigidbody2D>().velocity.y);
                  run=false;
              }
      
              if (animator != null) {
                  animator.SetBool ("run", run);
      
              }
      
          }
      }


      به این بخش مراجعه بفرمایید: http://promakers.ir/showthread.php?tid=12196



      ۰ نظر موافقین ۰ مخالفین ۰ ۳۰ شهریور ۹۴ ، ۱۶:۵۵
      مدیرکل

      منبع : gameover.blog.ir

      سعی کنید برای کدهاتون توضیح بذارید و dirty code رو به clean code ویرایش کنید.
      کد تمیز کدی هست که فهم و درک اون آسونتر و کد کثیف کدی هست که فهم و درکش سخت تر باشه.
      مثال:
      کد کثیف:

      کد:
      if (Input .GetAxis ("Horizontal")<0)//Left
      کد اصلاح شده تمیز:
      کد :
      if (Input.GetKey(KeyCode.LeftArrow))//Left 
      کد کثیف:
      کد:
      if (Input .GetAxis ("Horizontal")>0)//Right
      کد اصلاح شده ی تمیز:
      کد :
      if(Input.GetKey (KeyCode.RightArrow))//Right 
      کد کثیف:
      کد:
      if (Input .GetAxis ("Vertical")>0)//Up
      کد اصلاح شده ی تمیز:
      کد :
      if (Input.GetKey (KeyCode.UpArrow))//Up
      ۰ نظر موافقین ۰ مخالفین ۰ ۳۰ شهریور ۹۴ ، ۱۶:۵۵
      مدیرکل
      draw_text(100,100, chr(97));
      draw_text(100,150, ord('a'));
      کپی از : gameover.blog.ir
      ord('A');//out: 65
      
      chr('65')';//out: 'A'
      ۰ نظر موافقین ۰ مخالفین ۰ ۲۹ شهریور ۹۴ ، ۱۸:۵۰
      مدیرکل
      کپی از : gameover.blog.ir
      آموزش Rigging در 3dsmax
      خوب مثل اینکه تا خودم شروع نکنم کسی شروع نمی کنه.چند روزی هست دارم مطالعه می کنم و شبا فیلم آموزشی دانلود می کنم که زیاد به دردم نخورد و فکر کنم خودم باید به شیوه ی خودم یاد بدم تا بتونم توی کارهای تیمی بچه ها رو بیارم بالا . یکی برای بازی رستم و دیگه برای قوی تر شدن و انجام پروژه های بعدی انشاءا... big grin
      --
      دو تا سیستم رو فعلا عنوان می کنم: CAT + Biped

      CAT یا ابزار انیمیشن کاراکتر :

      [تصویر: catParent.jpg]

      برای دسترسی به این سیستم به بخشCreate و سپس Helper رفته و از لیست گزینه ی CAT objects و سپس Cat parent رو انتخاب می کنیم. و بعدشم اگه بخوایم انسان رو ریگ کنیم Base Human رو می زنیم بعدش توی صحنه کلیک می کنیم و Drag می کنیم(ماوس رو در حالی که کلیک رو نگه داشتیم حرکت می دیم و سپس رها می کنیم) تا یک استخوانبندی انسانی به صورت مربعی مانند ساخته بشه.
      گزینه های دیگه ای هم هست که برای ریگ موجودات مختلف بکار می ره.
      در اینجا من سیستم CAT رو نمی خوام استفاده کنم ولی فقط اصطلاحاتشو می گم تا یکم براتون راحت بشه :

      vertebrae=استخوان مهره
      Quadrupeds =چهارپایان
      biped=دو پا
      marine=دریایی
      alien=بیگانه
      angel=فرشته
      ape=میمون
      centipede=هزارپا
      lizard=مارمولک
      mech=شاید به معنی مکانیکی باشه
      panther=پلنگ
      spider=عنکبوت
      pelvis=لگن خاص
      بقیه هم چون نمیدونستم ترجمه نکردمbig grin


      سیستم Biped:

      سیستم دیگه ای به اسم Biped هست که کار باهاش خیلی ساده هست و پیوستگی و اتصال استخوان ها خیلی دقیق تر رعایت می شه. من هم چون به Biped برای ریگ کردن انسان بیشتر علاقه دارم میخوام بیشتر روش تمرکز کنم و اگه بعدا فرصتی بود و نیاز شد CAT و انیمیت کردن موجودات دیگه هم می گم.


      ما قراره رستم رو انیمیت کنیم. رستم یه وجود دو پا هست. پس باید از روش ریگ دوپایان که به انگلیسی میشه Biped (بای پِ د) استفاده کنیم.


      برای ایجاد سیستم دوپا ، به منوی Create و سپس System و سپس Biped برید.

      سپس در داخل صحنه Drag کنید تا استخوان بندی دلخواه شا ایجاد بشه به صورت خیلی زیباتر برای انسان:
      [تصویر: rig_Biped_3dsMax.jpg]


      در شکل بالا من اومدم قسمت های مختلف استخوان پا و دست و کمر و غیره رو با کلیک انتخاب کردم و جابجا کردم و چرخش دادم. شما هم می تونید قسمت های مختلف رو انتخاب کنید و کلید W رو برای جابجایی و کلید R رو برای تغییر مقیاس بزنید . و کلید E رو برای چرخش استفاده کنید.

      با Ctrl+A می تونید کل استخوان ها رو انتخاب کنید.

      خوب اگه شما کمی باهاش کار کنید می بینید چقدر استاندارد و طبیعی هست.

      یکی از فرق های سیستم Biped با CAT اینه که توی Biped ما نمی تونیم به صورت تکی استخوان ها رو Scale یا تغییر اندازه بدیم. و باید کل استخوان ها رو انتخاب کنیم و Resize کنیم. علتش اینه که Biped دقیقا استاندارد هست و استخوانها از هم جدا نمی شن و دقیقا مثل استخوانبدی انسان هست که توی بدن ما خداوند متعال ایجاد کردهhappy
      -
      برای ساخت انیمیشن هم یک دکمه ی کلید هست که تغییرات هر فریم رو در time Slider یا نوار لغزان زمانی میشه ثبت کرد و یک دکمه ی autokey که وقتی نوار انیمیشن رو جابجا می کنیم دیگه نیاز به زدن آیکن کلید نیست بلکه خودکار تغییراتی که می دیم رو ثبت می کنه و برای ذخیره هر تغییر جدید فقط کافیه نوار زمانی رو جابجا کنیم و ببریم جلوتر و تغییرات بعدی رو انجام بدیم و در نهایت انیمیشن رو Play می کنیمbig grin
      -
      تا اینجا شد سیستم Biped (دو پایان) و ایجاد انیمیشن که واسه یادگیریش باید هزارتا فیلم یوتیوبی و غیره و ... رو دانلود می کردیم و حجم می زدیم تا آخرشم بلانسبت گیج تر بشیم Smile اما من خیلی روون و ساده یاددادمwinking
      -
      کاری که باید بکنیم اینه که انیمیشن رو ایجاد کنیم و سپس مدلی رو بسازیم یا حالا دانلود کنیم و ببریم توی تری دی استادیو مکس و سوار کنیم روی استخوون تا مدل هم مثل استخون همون حرکات رو اجرا کنه.
      -
      برای اینکار باید استخون رو دقیقا توی مدل قرار بدیم که برای راحتی کار توصیه می شه فریم اول استخون به حالت T form یعنی دست باز باشه و همچنینن تمام انشتان دست و پا و استخوان ها داخل مدل جاسازی بشه تا حرکت طبیعی تری رو داشته باشیم.
      -
      لطفا تمرین کنید و نمونه کارهاتونو تو بخش نمونه کارها بذارید و بگید که با آموزش من یاد گرفتید big grin


      ----

      منبع :
      autodesk

      مترجم:sajjad3011

      3ds Max برای پویا سازی و Rigging کاراکتر دارای دو سیستم فرعی است :(CAT و character studio )
      اگر چه برای هر یک از این دو سیستم فرعی تنظیمات ویژه ای وجود دارد ، می توان آنها را با دو اصلاحگر Physique modifier و Skin modofier سفارشی کرد و هر دوی آن ها با تعدادی از فرمت فایل های motion capture سازگارند.

      اما بین سیستم CAT ( ابزار انیمیت کاراکتر)، و character studio تفاوت های مهمی وجود دارد.بهترین روش برای تشخیص اینکه کدام یک از این دو سیستم برای کار روی پروژه ی شما مناسب تر است آن است که ابتدا هر دوی آن ها را بیاموزید و سپس طبق تجربه،تصمیم بگیرید هرکدام را که مایلید انتخاب نمایید.

      در زیر مقایسه ای بین آن دو داریم:

      CAT :
      این سیستم با توجه به پیشرفته بودنش در بعضی اوقات ساده ترین روش برای انیمیشن کاراکتر هست. با CAT می تونید به سادگی کاراکترهای چند پا و غیرانسانی خود را rig و animate کنید.حتی می توانید کاراکترهای انسانی خود را به طور واقع گرایانه ای rig کنید.از بین ریگ های ساخته شده با CAT ،موجودات فرز و چابکی مثل اژدها(dragon) با 4 پا و 2 بال،عنکبوت(spider)،و یک چندپا(centipede) با 8 پا وجود دارد.شما می توانید همه ی اینها را به آسانی بدون استفاده از graph-based CATMotion editor انیمیت کنید. CATMotion بهترین گزینه برای اصلاح حرکت چرخشی در زمان واقعی با استفاده از تنظیم پارامترها برای بخش هایی از بدن مثل لگن خاصره(pelvis) است;این پارامترها عبارتند از Twist(پیچ و تاب) و Roll(گردش) و Pitch (پیچ)و Lift (آسانسور) و Push (فشار) .

      قدرت دیگر و نسبتا آسان به استفاده از ویژگی CAT ، سیستم لایه بندی(layering system) است.هر دوی آنها از طریق CATMotion(برای چرخه بخش بدن فردی) و در full-rig level با فریم های کلیدی وزن گذاری شده(keyframed weighting) در هر دو سطح قابل دسترسی هستند.دومین مورد،پشتیبانی از رمز گذاری سیستم رنگ بندی لایه هاست و با استفاده از آن می توان فهمید که کدام لایه به حرکت در هر لحظه ی داده شده کمک می کند. CAT همچنین از ادغام بین FK و IK برای کنترل سفارشی حمایت می کند.

      در آخر، CAT ،ماهیچه و اشیای استاندارد ماهیچه ای را برای شبیه سازی ساختمان عضلانی ایجاد می کند.
      در درس بعضی character studio را مختصر شرح میدهیم.winking

      character studio:
      این سیستم،شامل یک مجموعه ابزار وسیع برای character-animation می باشد که میتواند با کاراکترهای چندپا کار کند اما در درجه ی اول برای ریگ دوپایان(bipedal rigs) در نظر گرفته شده است.از این رو بر ابجکت اصلی آن اسم Biped نهاده شده است.همچنین بخشی از character studio عبارت است از Physique modifier (مدیفایر فیزیک) برای skinning ریگ های کاراکتر. Physique می تواند با ابجکت های ریگ غیر از Biped و خصوصیاتی مثل بخش های user-definable rigid (جامد تعریف شده ی کاربر) و deforming(تغییر شکل) استفاده شود سومین کامپوننت character studio عبارت است از Crowd که انیمیشن روالی از گروه های بزرگی از کاراکترها را با رفتارهایی مثل اجتناب(avoidance)،حرکت تصادفی،دنبال کردن یک سطح امکان پذیر می کند. Biped کامپوننت character studio ی قدرتمند و پیشرفته تری است.از ویژگی های آن می توان به ایجاد procedural footstep (قدم زدن رویه ای)، freeform animation(انیمیشن فرم آزاد)،یک ویاریشگر انیمیشن ویژه به نام Workbench و یک خصوصیت انیمیشن غیرخطی به نام Motion Mixer (در دسترس برای انیمیشن عمومی) اشاره کرد.همچنین،خصوصیت Motion Flow تولید اسکریپت تصادفی،انتقالات رویه ای(procedural transitions) و بیشتر ... را ارائه می دهد.


      این PDF هم skinning یا سوار کردن مدل روی استخون biped رو یاد میده:
      http://images.autodesk.com/adsk/files/3dsmax_2010_character_animation.pdf


      ۰ نظر موافقین ۰ مخالفین ۰ ۲۸ شهریور ۹۴ ، ۰۰:۵۸
      مدیرکل
      کپی از : gameover.blog.ir
      با اسکریپت زیر دشمن همیشه به player نیگا می کنه


      using UnityEngine;
      using System.Collections;

      public class 
      ExampleClass MonoBehaviour {
          public 
      Transform target;
          
          
      void Update() {
              
      // Rotate the camera every frame so it keeps looking at the target 
              
      transform.LookAt(target);
          }
      }


      متغیر target از نوع public تعریف شد.
      target یعنی هدفی که می خوایم دشمن بهش نگاه کنه.
      بنابراین می تونیم اسکریپت رو بندازیم روی دشمن و سپس player رو بکشیم بندازیم روی پارامتر target که به صورت پابلیک ساختیم.
      ۰ نظر موافقین ۰ مخالفین ۰ ۲۷ شهریور ۹۴ ، ۲۳:۱۴
      مدیرکل
      ۰ نظر موافقین ۰ مخالفین ۰ ۲۵ شهریور ۹۴ ، ۲۱:۲۸
      مدیرکل
      14 ثانیه صبر و رد تبلیغ رو بزنید :

      http://opizo.com/JQrH7Q


      ۰ نظر موافقین ۰ مخالفین ۰ ۲۵ شهریور ۹۴ ، ۲۱:۰۰
      مدیرکل
      روی لینک زیر کلیک کنید. بعد از 14 ثانیه رد تبلیغ رو بزنید:


      http://opizo.com/UEkDFS


      PDF رو بخونید قدم به قدم مراحل رو طی کنید. موفق باشید

      ۰ نظر موافقین ۰ مخالفین ۰ ۲۵ شهریور ۹۴ ، ۱۶:۱۳
      مدیرکل
      چرخش حول محور z :
      transform.Rotate(0, 0, 100*Time.deltaTime);  //fast anti-clockwise rotation
       transform.Rotate(0, 0, 10*Time.deltaTime);   // slower  anti-clockwise rotation
       transform.Rotate(0, 0, 100* -Time.deltaTime);  // fast clockwise rotation
       transform.Rotate(0, 0, 10* -Time.deltaTime);   // slower clockwise rotation

      چرخش به سمت ماوس:
      void Update () {
      Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
      transform.rotation = Quaternion.LookRotation(Vector3.forward, mousePos - transform.position);
      }


      ۰ نظر موافقین ۰ مخالفین ۰ ۲۵ شهریور ۹۴ ، ۰۳:۴۰
      مدیرکل
      ۰ نظر موافقین ۰ مخالفین ۰ ۲۵ شهریور ۹۴ ، ۰۲:۴۸
      مدیرکل

      پاسخ:
      گاهی علت این است که به گیم ابجکت های خود collider های 2D داده ایم اما در اسکریپت خود از توابع 3D در اسکریپ های خود استفاده کرده ایم.

      برای حل مشکل از مثال زیر الگو بگیرید :

      کد سیشارپ:
              void OnTriggerEnter2D(Collider2D other) {
              
      Debug.Log("OnTriggerEnter 2D");
              } 

              
      void OnCollisionEnter2D(Collision2D coll) {
              
      Debug.Log("OnCollisionEnter 2D"); 
      نکته ی دوم اینه که هر دو گیم ابجکت باید collider 2d داشته باشد.
      نکته سوم : بلعکس موارد فوق هم ممکنه رخ بده که خودتون می تونید جابجا کنید توابع 2D رو با توابع 3D.
      ۱ نظر موافقین ۰ مخالفین ۰ ۲۴ شهریور ۹۴ ، ۰۲:۰۲
      مدیرکل

      gameover.blog.ir

      تکنیک یک : یونیکد

      🔶🔶🔶🔶تایپ فارسی در یونیتی/فارسی نویسی در یونیتی:(آموزش:سجاد)

      خوب اینم به خاطر سوال یکی از دوستان اشاره می کنم خودتون برید پی ش:

      1)این سایت برای پیدا کردن کد کاراکترهای فارسی و انگلیسی و غیره به کارتون میاد :
      https://unicode-table.com/en/#arabic

      2) این کد برای تبدیل کد هگزا دسیمال به کاراکتر مورد نظر هست(کدش به زبان سیشارپ هست و در یونیتی ازش استفاده می کنیم)

      char upArrow = '\u25B2';
      Debug.Log(upArrow.ToString());

      سایت رو می بینید؟ سمت چپش هر کاراکتر کد هگز داره

      مثلا 0620 میشه "ی" فارسی

      با بک اسلش یو،اومده می گه می خوام یونیکد تایپ کنی برام
      بعدش کد اسکی می ده که در مبنای شانزده یا هگزا دسیمال هست
      25B2

      برد یم دسیمال دهدهی

      decimal=مبنای ده

      اگه alt نگه داری 9650 بزنی اون کاراکتر تایپ میشه

      اگه هم توی یونیتی بخوای باید همین 9650 رو تبدیل به هگزا دسیمال کنی بعدش بدی به تابع ToString

      تبدیل کنه به رشته

      با \u


      char upArrow = '\u25B2';
      Debug.Log(upArrow.ToString());

      بلی

      باید برید تو سایت https://unicode-table.com/en/#arabic

      کد تمام حروف رو در بیارید

      از a تا z
      از الف تا ی
      و الی آخر


      و کد هگزا دسیمالشونو توی ارایه کپی کنی

      توی یونیتی

      بعدش از هر کدوم خواستی استفاده کنی

      کلمه دلخواه رو هم می تونی بنویسی

      یا رشته دلخواه


      اها تازه فهمیدم😃

      =====


      تکنیک دو:

      با استفاده از یک فارسی ساز می تونید متن فارسی رو به یونیتی انتقال داده و از فونت مجازش توی یونیتی استفاده کنید.
      به عنوان مثال فونت F_unwan.ttf (فونت هایی که اولشون F داره) برای فارسی ساز Leo moon کار می کنه که می تونید این فونت رو بکشید توی project و سپس یک ui canvas Text ایجاد کرده و فونت رو بکشید روی پارامتر Font در inspector.
      سپس متن تایپ شده در Leomoon رو کپی کنید توی فیلد Text در inspector .
      [تصویر: farsi_unity.gif]




      کل کاراکترهای فارسی رو با Leomoon کپی بگیرید

      ببر توی یک آرایه در یونتی ذخیر کنید


      برای اینکه متن فارسی با حروف درست وارد بشه و حروف جمله به ترتیب از راست ترین حرف وارد بشه  و سپس با تایپ به سمت راست بره ابتدا خصوصیت رو در inspector روی چپ چین بذارید سپس جمله ی فارسی رو در متغیری از نوع رشته ای ذخیره کنید مثال myString.
      سپس داریم:

      IEnumerator PlayText()
      {   
       for (int i=myString.Length-1;i>0i--) {
       
        TTX.text = myString[i] + TTX.text ;
          yield return new WaitForSeconds (0.125f);
      
       }
      }

      ۱ نظر موافقین ۱ مخالفین ۰ ۲۴ شهریور ۹۴ ، ۰۲:۰۱
      مدیرکل

      //move and jump -
      //attach this Script to ur Player
      //hot keys :  
      //            ArrowKeys=Move
      //            Space=Jump
      //Edided by : sajjad3011
          
      var speed float 6.0;
          var 
      jumpSpeed float 8.0;
          var 
      gravity float 20.0;

          private var 
      moveDirection Vector3 Vector3.zero;
          function 
      Start()
          {
                
      //this.gameObject.AddComponent(Rigidbody);//afzudane fizik
                
      this.gameObject.AddComponent(CharacterController);//afzudane character controller
          
      }
          function 
      Update() {
              var 
      controller CharacterController GetComponent(CharacterController);
              if (
      controller.isGrounded) {
                  
      // We are grounded, so recalculate
                  // move direction directly from axes
                  
      moveDirection Vector3(Input.GetAxis("Horizontal"), 0,Input.GetAxis("Vertical"));
                  
      moveDirection transform.TransformDirection(moveDirection);
                  
      moveDirection *= speed;
                  
                  if (
      Input.GetButton ("Jump")) {
                      
      moveDirection.jumpSpeed;
                  }
              }

              
      // Apply gravity
              
      moveDirection.-= gravity Time.deltaTime;
              
              
      // Move the controller
              
      controller.Move(moveDirection Time.deltaTime);
          }



      واسه تشخیص برخورد هم ابتدا گیم ابجکت دلخواه رو انتخاب می کنی و add component و سپس box collider (محدوده ی مکعبی شکل) یا sphere collider( محدوده ی کره ای شکل برای شخص کردن ناحیه برخورد) میدی بهشون.
      rigid body هم ندادم چون کمی مشکل ساز میشه
      کد خیلی ساده هست . با کد یک کاراکتر کنترلر اضافه کردم. می تونستم دستی هم تو بخش طراحی با دکمه add component و تایپ character controller و enter اضافه کنم که خودم کدنویسی رو چون دوست داشتم با کد اضافه کردم
      ۲ نظر موافقین ۰ مخالفین ۰ ۲۳ شهریور ۹۴ ، ۱۸:۰۹
      مدیرکل
      ۰ نظر موافقین ۰ مخالفین ۰ ۲۳ شهریور ۹۴ ، ۰۲:۱۵
      مدیرکل
      کل مطلب در RayCast خلاصه میشه.
      ایده :

      http://answers.unity3d.com/questions/438175/enemy-ai-detect-player-when-seen.html


      ۰ نظر موافقین ۰ مخالفین ۰ ۲۲ شهریور ۹۴ ، ۲۰:۵۲
      مدیرکل

      چند فرد مسلط به یونیتی برای ساخت بازی دو بعدی پیام بدن.

      ۰ نظر موافقین ۰ مخالفین ۰ ۲۱ شهریور ۹۴ ، ۲۰:۵۳
      مدیرکل

      اینو بذار تو update:
      واسه چرخش:

      کد:

      transform.Rotate (new Vector3(0, Time.deltaTime, 0) * rotationSpeed );
      به جای rotationSpeed هم سرعت دلخواه رو بده. پاراکتر اول و آخر Vector3 رو صفر دادم که x,z هستن.ما میخوام حول y بچرخه واسه همین پارامتر دوم رو هر لحظه با زمان افزایش میدیم و بردار بدست اومده رو در سرعت دلخواه ضرب می کنیم که زاویه چرخش هی زیاد میشه و همینطور می چرخه.
      واسه حرکت هم : مثال:
      کد:

      //transform.position.Set(new_x,new_y,new_z);
      transform.position.Set(transform.position.x,transform.position.y,new_z)
      ۴ نظر موافقین ۰ مخالفین ۰ ۱۷ شهریور ۹۴ ، ۱۹:۰۲
      مدیرکل


      Vector3.zero    خلاصش میشه Vector3(0, 0, 0).
      Vector3.one    خلاصش میشه Vector3(1, 1, 1).

      Vector3.down    خلاصش میشه Vector3(0, -1, 0).
      Vector3.up    خلاصش میشه Vector3(0, 1, 0).

      Vector3.forward    خلاصش میشه Vector3(0, 0, 1).
      Vector3.back    خلاصش میشه Vector3(0, 0, -1).

      Vector3.left    خلاصش میشه Vector3(-1, 0, 0).
      Vector3.right    خلاصش میشه Vector3(1, 0, 0).


      myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
      ادامه ی بحث:
      http://promakers.ir/showthread.php?tid=12123&pid=125881#pid125881
      ۰ نظر موافقین ۰ مخالفین ۰ ۱۷ شهریور ۹۴ ، ۱۴:۵۵
      مدیرکل
      منبع: gameover.blog.ir



      //test.Csharp
      //Switch between animations of Animator component by changing the condition variable 'state'
      //Author:Sajjad3011
      
          using UnityEngine;
          using System.Collections;
          public class test : MonoBehaviour {
              int state = 0;
              public Animator animator1;
              void Start () {
              }    
              // Update is called once per frame
              void Update () {
                  if (Input.GetKey (KeyCode.LeftArrow)) {
                      state = 1;
                      Debug.Log("left");
                  }
                  if (Input.GetKey (KeyCode.RightArrow)){
                      state = 2;
                      Debug.Log("right");
              }
                  if (animator1 == null) {
                      Debug.LogError("Animator is null!");
                  } else {
                       animator1.SetInteger("state", state);
                  }
          
              }
          }
      
      //S3011 
      در این اسکریپت متغیر animator1 رو به صورت Public تعریف کردیم تا بتونیم بعد از اختصاص این اسکریپت، توی پنجره inspector به صورت پارامتر ورودی تنظیم کنیم.

      متغیر state از کامپوننت Animator رو با فشردن کلید چپ و راست روی 1 و 2 تنظیم می کنیم و توی پنجره ی ماشین حالت Animator هم شرط یا condition ای به نام state از نوع Integer تعریف می کنیم و روی فلشی که به سمت انیمیشن سمت راست می ره می گیم اگه state مساوی(Equal) بود به 1 و روی فلشی که به سمت انیمیشن دویدن به سمت چپ می ره می گیم اگه state مساوی(Equal) بود به 2 .


      ۰ نظر موافقین ۰ مخالفین ۰ ۱۶ شهریور ۹۴ ، ۱۰:۵۳
      مدیرکل

      بعد از 14 ثانیه رد تبلیغ رو بزنید لینک مستقیم فایل mp4 میاد.حجم حدود 43 مگ هست.

      http://media.farsnews.com/media/Uploaded/Files/Images/1394/06/14/13940614000151_PhotoI.jpg

      http://opizo.com/K3GPhx

      ۰ نظر موافقین ۰ مخالفین ۰ ۱۶ شهریور ۹۴ ، ۱۰:۳۱
      مدیرکل
      ثانیه صبر کنید سپس رد تبلیغ و بزنید تا به صفحه مورد نظر هدایت بشید. یادتون نره بدون شیلتر فکن وارد بشید:

      http://opizo.com/hMhAqi


      ۰ نظر موافقین ۰ مخالفین ۰ ۱۵ شهریور ۹۴ ، ۱۳:۱۴
      مدیرکل
      ۱ نظر موافقین ۰ مخالفین ۰ ۱۴ شهریور ۹۴ ، ۱۷:۱۲
      مدیرکل

      http://s6.picofile.com/file/8210293142/The_animator_s_survival_kit.jpg

      روی لینک کلیک کنید و 14 ثانیه منتظر بمانید و سپس رد تبلیغات رو بزنید.

      حجم: تقریبا 30 مگابایت

      فرمت : PDF

       

      http://opizo.com/tuOzcG

      اگه لینک خراب بود بگید اصلاح کنیم.

      ۰ نظر موافقین ۰ مخالفین ۰ ۱۴ شهریور ۹۴ ، ۰۲:۴۹
      مدیرکل
      بهترین بازی های سال 2015


      http://opizo.com/7Xxi7g


      بهترین بازی های اندرویدی سال 2014 از نگاه گوگل:

      http://opizo.com/C5l1PI


      ۱ نظر موافقین ۰ مخالفین ۰ ۱۳ شهریور ۹۴ ، ۰۷:۲۶
      مدیرکل

      می خوای چیکار کنی با این کد؟ موبایل رو کج کنی به راست و چپ موتور یا ماشین فرمون بده به چپ و راست ؟
      با این عکسا روحیه بدم بهت؟ Gyroscope

      http://www.i-phone.ir/forums/uploadedpictures/8cc1d230c10801cfb2144d6bac42639f.jpg

      http://www.techtilt.com/wp-content/uploads/2010/06/iPhone-4-Gyroscope-640x410.jpg


      http://opizo.com/AJjJkF

      ۰ نظر موافقین ۰ مخالفین ۰ ۱۲ شهریور ۹۴ ، ۱۱:۴۷
      مدیرکل
      منبع : gameover.blog.ir
      این کد سطرهای یک فایل رو که شامل لینک های وب هست از فایل 1.txt می خونه و به صورت لینک در تگ a href نشون میده :

      <?php
      //Link saz
      //Author:sajjad3011
      $file = fopen("1.txt","r");
      
      while(! feof($file))
        {
       $myStr= fgets($file);
        echo "<a href='" . $myStr . "' >" .   $myStr . "</a><br />";
        }
      
      fclose($file);
      ?>


      ۰ نظر موافقین ۰ مخالفین ۰ ۱۲ شهریور ۹۴ ، ۰۳:۵۱
      مدیرکل
      منبع :gameover.blog.ir
      1. if(!playerController.IsGrounded() && playerController.velocity.y < 0)
      2. {
      3. animation.CrossFade("FallDown", 0.5);
      4. animation["FallDown"].speed = 3;
      5. }


      منبع :
      http://answers.unity3d.com/questions/776750/fall-animation-when-character-is-falling.html

      ۰ نظر موافقین ۰ مخالفین ۰ ۱۰ شهریور ۹۴ ، ۱۲:۲۱
      مدیرکل

       منبع :gameover.blog.ir

      به برنامه ایکلیپس برید و از منوی بالاش Help رو بزنید بعد هم Install New Software.


      http://bayanbox.ir/id/3700347232681624161?view


      ۰ نظر موافقین ۰ مخالفین ۰ ۱۰ شهریور ۹۴ ، ۰۱:۱۲
      مدیرکل

      منبع : gameover.blog.ir


      Edit->Resources->Open Resource Folder

      مسیر دیگر

      Settings->Manage Resources


      مسیر نصب براش ها :

      AppData\Roaming\krita\share\apps\krita\brushes


      ---

      فایل های داخل پوشه های Brush و pattern و paintoppressets رو از پوشه ی دانلودی در پوشه های متناظر مسیر AppData\Roaming\krita\share\apps\krita کپی کنید. بعدش krita رو ریست کنید و حالشو ببرید.


      ۱ نظر موافقین ۰ مخالفین ۰ ۰۹ شهریور ۹۴ ، ۰۵:۴۶
      مدیرکل
      منبع: gameover.blog.ir
      برای اینکار باید به قسمت Global Game settings سربرگ Other برید.

      http://s6.picofile.com/file/8209107150/disableDefautKey.jpg


      البته بهتره با game maker studio کار کنید و همچنین یادتون باشه کدهای save نداریم و باید از توابع و فایل های ini استفاده کنید.
      ۰ نظر موافقین ۰ مخالفین ۰ ۰۷ شهریور ۹۴ ، ۱۹:۰۱
      مدیرکل

       منبع :gameover.blog.ir



      ctrl+shift+B

      Player settings

      Other settings

      miminum api Level

      android 2

      http://s3.picofile.com/file/8208463468/buildSettingMinimumAndroidRequirement.gif


      ۰ نظر موافقین ۰ مخالفین ۰ ۰۳ شهریور ۹۴ ، ۲۱:۱۳
      مدیرکل
      منبع :gameover.blog.ir
      <?php
      $str = 'php is easy and powerful';
      echo preg_match('/php/', $str);
      ?>
      خروجی کد بالا برابر با 1 خواهد بود، البته 1 در اینجا یعنی کلمه مورد نظر در عبارت وجود دارد.

      مثال بعدی:
      - بررسی یک رشته متنی برای حرف a-z و اعداد 0-9 در JavaScript
      در این مثال می خواهیم رشته متنی را در JavaScript بررسی کنیم و ببینیم آیا تنها شامل حروف a-z، اعداد 0-9 و فضای خالی است یا خیر، خواهیم نوشت:
      <script type="text/javascript">
      var str = 'Regex is so Simple!!';
      var reg = /^[0-9A-Za-z ]*$/;
      if(reg.test(str)){
          alert('مقادیر معتبر است');
      }
      else{
          alert('مقادیر معتبر نیست');    
      }
      </script>

      مطالعات بیشتر(منبع webgoo)
      http://webgoo.ir/154/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C-%D8%B9%D8%A8%D8%A7%D8%B1%D8%A7%D8%AA-%D8%A8%D8%A7-%D9%82%D8%A7%D8%B9%D8%AF%D9%87-regular-expressions

      ۰ نظر موافقین ۰ مخالفین ۰ ۰۳ شهریور ۹۴ ، ۰۴:۱۶
      مدیرکل

       منبع :gameover.blog.ir


      ما توی basic4android یا بعضی زبونا یه چیز داریم به نام Exception یا همون "استثنا"ی خودمون. از این استثنا با نام خلاصه ی e هم توی سیشارپ یا بعضی زبون ها و حتی گاهی جاوا استفاده می شه.

      ۱ نظر موافقین ۰ مخالفین ۰ ۰۳ شهریور ۹۴ ، ۰۳:۲۹
      مدیرکل

       منبع :gameover.blog.ir


      velocity

      سرعت حرکت یا شتاب رو تعریف می کنه.سرعت دوربین+کامپوننت انیماتور+سیستم ذره ای پارتیکل(دود و جرقه و ....)+بدنه های فیزیکی جامد و سخت(rigid body)+کامپوننت character controller و .... .
      ۱ نظر موافقین ۰ مخالفین ۰ ۰۱ شهریور ۹۴ ، ۲۳:۴۰
      مدیرکل

      کپی از : gameover.blog.ir

      موقعی که دارم خروجی apk می گیرم خطای زیر رو میده.این خطا برای چیه ؟

      UnityException: Minimum platform required is Android 5.0 (API level 21)
      [تصویر: android5_0_api_level_21.jpg]

      ۳ نظر موافقین ۰ مخالفین ۰ ۰۱ شهریور ۹۴ ، ۲۲:۳۳
      مدیرکل

      منبع : gameover.blog.ir


      توی رویداد key press Any key از گیم میکر استادیو اینو بذارید :


      کد :

      window_set_captionstring(keyboard_lastkey));//room_caption = string(keyboard_lastkey) ;
      ۰ نظر موافقین ۰ مخالفین ۰ ۰۱ شهریور ۹۴ ، ۰۲:۱۶
      مدیرکل

      منبع : gameover.blog.ir

      بعضی از پروژه های گیم میکر استادیو هستن که توی خروجی apk خطای کامپایلر null زیر رو نشون می دن و build failed میشه.

      کد:
      BUILD FAILED
      C:\Users\User\AppData\Local\Android\android-sdk\tools\ant\build.xml:650: The following error occurred while executing this line:
      C:\Users\User\AppData\Local\Android\android-sdk\tools\ant\build.xml:691: null returned: 1
      اما پروژه های دیگه شما بدون خطا به apk بیلد میشه.

      هیچکس دلیل رو نمی دونه یا اکثرا می گن برو SDK یا JDK رو عوض کن یا گیم میکر استادیو رو حذف و نصب و .. کن.

      اما علت اصلی از خود پروژه شماست.

      علت اصلی این خطا در اغلب پروژه ها اینه که Display name و Package name رو درست ندادید.

      باید برید به مسیر Global game Options->Android Tab->Display name و اسم مناسبی با کاراکتر های مجاز بدید.

      مثلا نباید اسم دارای پرانتز باشه یا  فاصله یا حروف بزرگ یا کاراکترهای غیرمجاز و .... big grin

      با تغییر اسم می تونید به راحتی خروچی apk بگیرید.

      امیدوارم این آموزش مفید بوده باشه.winking
      ۱ نظر موافقین ۰ مخالفین ۰ ۳۱ مرداد ۹۴ ، ۱۵:۴۶
      مدیرکل
      gameover.blog.ir

      هوش دشمن (Enemy AI)


      ۱ نظر موافقین ۰ مخالفین ۰ ۳۰ مرداد ۹۴ ، ۰۴:۲۷
      مدیرکل

      gameover.blog.ir

      تگ یا Tag عنی برچسب یا اسم مستعار.
      توی html ما قبلا به چند تا ابجکت id می دادیم که ثابت بود و هر ابجکت یه اسم ثابت داشت نمی تونستیم تغییرش بدیم ولی می تونستیم یه کلاس یا class تعریف کنیم و همه ی ابجکت های لخواه رو از نوع اون کلاس تعریف کنیم یا برچسب بزنیم. بعدش که میخواستیم تغییراتی روی اون ابجکت ها ایجاد کنیم دیگه دستی اینکار سخت بود. کافی بود اسم اون کلاس رو داشته باشیم و خصوصیاتشو دستکاری کنیم یا بهشون دستیابی داشته باشیم.
      توی html چیزی بود تو مایه های tagByName یا tagByID که بهش ایدی میدادیم و خودش همه رو لیست می کرد بعدش میریختیم توی ارایه و با یه حلقه ی تکرار به کل ابجکت های ریخته شده توی ارایه دسترسی داشتیم و یه سری عملیات کلی روی اونا انجام میدادیم.

      ۰ نظر موافقین ۰ مخالفین ۰ ۳۰ مرداد ۹۴ ، ۰۴:۲۴
      مدیرکل

      gameover.blog.ir

      AI = Artificial Intelligence به معنی هوش مصنوعی هست.

      هوش رو با منطق(logic) (دستورات شرطی مثل and و not و or و if و ... ) میسازن.

      بعضی جاهاشو هم با دستورات محاسبات یا ریاضیات (Mathematics) میسازن(مثل add و sub و ... و دستورات جمع و تفریق و ... که توی درس assembly یا ... می تونید بخونید توسط CPU انجام میشه)

      سال 86 یا 87 بود اگه اشتباه نکنم یه کد هوش مصنوعی با CPP نوشته بودم که واقعا فکر می کرد و می تونست یاد بگیره و مغزشو گسترش بده و تصمیم بگیره تا در کل یک منطقه به حرکت در بیاد. روش کار من الگوریتم پر کردن یک ناحیه ی بسته بود که با داشتن مختصات داخل اون میومدم چهار جهتش رو بررسی می کردم اگه اطرافش خالی بود مختصات نقاط اون چهار طرف بالا و پایین و چپ و راست رو save می کردم توی یک stack یا پشته یا آرایه و بعدش اونا رو دونه دونه از آرایه بیرون میاوردم و چهار جهت هر یک از اونا رو دوباره بررسی می کردم که جای خالی داریم یا نه اگه داشتیم مختصات اون نقاط رو بازم می ریختم توی آرایه و همینطور الی آخر تا همه جا رنگ آمیزی بشه.

      خوب این روش کمک های زیادی به ما می کنه و می تونیم چیزای زیادی برای درک خوش مصنوعی در زندگی و جاهای دیگه ازش یاد بگیریم.

      ماشینی رو فرض کنید توی یک پارکینگ هست و می خواد درب خروج رو پیدا کنه. باید فاصله های بالا و چپ و اطراف رو با انداختن نویز یا اشعه یا توابع مخصوص بررسی کنه تا ببینه اون نقاط جای خالی دارن واسه حرکت یا خیر.

      و همینطور باید جاهای بررسی شده تا رسیدن به اولین دیوار رو علامتگذاری کرد تا دوباره اون نقاط رو بررسی نکنه و وقت هدر نده.

      اینا همش از لحاظ تئوری،توضیحات بود که من براتون دادم.sajjad3011

      واسه اینکه هوش بنویسید باید توابع و روش ها و فکر خودتون رو شترش بدید و مهم از همه اینه که باید کد ببینید و فیلم های یوتیوب و سایت های ایرانی و غیره ... رو بررسی کنید یا مطالعه کنید.


      ۰ نظر موافقین ۰ مخالفین ۰ ۳۰ مرداد ۹۴ ، ۰۴:۲۰
      مدیرکل

      منبع :gameover.blog.ir

      توی یونیتی این روش رو میشه با way points ایجاد کرد که بالاتر درس دادم.

      روش کار A star اینه که تمام مسیر ها رو باید توی آرایه یا یه لیستی ذخیره کنیم و فاصله ها رو محاسبه کنیم.(جستجوی مکاشفه ای یا huristic)

      بعدش نزدیک ترین راه رو انتخاب می کنیم.

      محاسبات قبلی برای پیدا کردن مسیر بهینه وجود داره که اونا رو دیگه خودتون می تونید با هر روشی انجام بدید.

      مثلا زمانی که player بیکار هست یا ایستاده می تونید محاسبات اضافه رو انجام بدید. یا وقتی کاراکتر روی فلان نقطه ( onCollisionEnter یا ...) هست فاصله ی نزدیک ترین مسیر و بهینه ترین مسیر رو پیدا کنیم بعدش دشمن رو حرکت بدیم بیاد سمت ما(player)

      مثلا این عکس رو ببینید :
      [تصویر: a_star_sajjad3011.jpg]

      ۰ نظر موافقین ۰ مخالفین ۰ ۳۰ مرداد ۹۴ ، ۰۴:۰۹
      مدیرکل

       منبع :gameover.blog.ir

      یک plane به عنوان زمین و چند تا cube به عنوان مانع بذارید روی plane .
      یه sphere با متریال زرد رنگ به نام player1 با تگ Player ایجاد کنید.
      یه cube با متریال قرمز رنگ به نام enemy به عنوان دشمن ایجاد کنید که قراره هوش بدیم بهش و یه rigid body component بدید بهش.(چطوری؟ بپرسید تازه کاراbroken heart )
      -

      ۰ نظر موافقین ۰ مخالفین ۰ ۳۰ مرداد ۹۴ ، ۰۴:۰۹
      مدیرکل

       منبع :gameover.blog.ir

      http://s5.picofile.com/file/8153967184/way_ai.jpg

      ۱ نظر موافقین ۰ مخالفین ۰ ۳۰ مرداد ۹۴ ، ۰۴:۰۷
      مدیرکل

      منبع :gameover.blog.ir
      اسکریپت خود را به زبان js ایجاد در بخش تعریف متغیرهای سراسری (قبل از تابع Start) این را بنویسید:

      کد:
      var اسم دلخواه مجاز: Transform[];
      مثال:
      کد PHP:
      var waypoints Transform[]; 

      اسکریپت رو بندازید روی یه گیم ابجکت دلخواه.

      گیم ابجکت رو انتخاب و به زیر شاخه ی اسکریپت در کادر خصوصیات(inspector) نگاه کنید و پارامتر size رو بیابید.

      تغییرش بدید تا طول آرایه تغییر کنه.(مثال: اگه size رو دید 3 ، سه تا پارامتر Element0 و Element1 و Element2 ایجاد میشه.)

      نوع رو چون Transform گذاشته بودیم می تونیم گیم ابجکت های دلخواه رو بکشیم بندازیم توی هریک از این سه سلول آرایه.

      یک کاربرد : ساخت نقاط روی یک مسیر و استفاده برای مسیر یابی در بازی های مختلف(ورزشی،مسابقه ای،استراتژی و الی آخر...)

      در بخش AI in Unity انجمن (زیر شاخه ی بخش مقالات اموزشی Unity) ساخت یک موجود هوشمند ساده رو با همین روش و یه دو تا کد کوچولو یادتون میدم. خودتون مراجعه کنید بعدا.
      ۰ نظر موافقین ۰ مخالفین ۰ ۳۰ مرداد ۹۴ ، ۰۴:۰۶
      مدیرکل


      مباحث ساده هوش مصنوعی
      http://promakers.ir/showthread.php?tid=8810
      http://promakers.ir/showthread.php?tid=1...#pid109686

      تشکرها کم بود ولی عیبی نداره . در درس بعدی Lerp رو یاد می دم و بعدش احتمال داره روی Slerp بحث کنم. با توجه به اینکه به سایت های
      ۰ نظر موافقین ۰ مخالفین ۰ ۳۰ مرداد ۹۴ ، ۰۴:۰۶
      مدیرکل

      کپی شده از gameover.blog.ir

      آموزش image effect (افزودن افکت بلور یا image blur Effect در یونیتی):
      --
      دوربین اصلی را انتخاب کنید.

      ۰ نظر موافقین ۰ مخالفین ۰ ۳۰ مرداد ۹۴ ، ۰۳:۴۸
      مدیرکل
      وبلاگ gameover.blog.ir

      //treble jump unity _ 2d
      //gameover.blog.ir
       if (jumpkeydown) { if (grounded) { rigidbody2D.velocity.y = 0; rigidbody2D.AddForce(new Vector2(0, jumpForce)); candobulejump = true; } else if (candoublejump) { candoublejump = false; cantreblejump=true; rigidbody2D.velocity.y = 0; rigidbody2D.AddForce(new Vector2(0, jumpForce)); } else if (candtreblejump) { candtreblejump= false; rigidbody2D.velocity.y = 0; rigidbody2D.AddForce(new Vector2(0, jumpForce)); } }

      ۰ نظر موافقین ۰ مخالفین ۰ ۳۰ مرداد ۹۴ ، ۰۲:۰۶
      مدیرکل
      اینو توی رویداد Step بذارید:
      if (mouse_check_button_pressed(mb_left) && position_meeting(mouse_x,mouse_y,obj_knight)// && is a logical operator equivalent too 'and', when you have and it returns if both are true else //false
          {
              //code
          }

      ۰ نظر موافقین ۰ مخالفین ۰ ۲۹ مرداد ۹۴ ، ۲۱:۴۷
      مدیرکل

      کل ابزارها ی اندروید

      http://downloads.puresoftware.org/files/android/

      http://kaopu.so/pan/WINDOWS_TOOLS


      وبلاگ gameover.blog.ir

      آموزش گام به گام نصب و راه اندازی Basic4Android
      --
      منبع :
      http://basic4android.org/index.php?/topi...%AF%D8%B1/
      --
      Java Development Kit:
      http://www.mediafire.com/download/ralelg...id.org.zip
      --
      Sun Java 64 Bit:
      http://www.mediafire.com/download/boww8o...67.x64.zip
      یا
      SunJava 32 Bit :
      http://www.mediafire.com/download/h8kq3j...67.x86.zip
      --
      Android.SDK.Release.23.0.2:
      http://www.mediafire.com/download/0p8faa...23.0.2.zip
      --
      فایل های مورد نیاز برای قرار دادن در Android SDK :
      Build-Tools_r19.0.3-Windows:
      http://www.mediafire.com/download/o9r9k5...indows.zip
      Platform-Tools_r19.0.1-Windows:
      http://www.mediafire.com/download/f1jdxs...indows.zip
      PlatForms:
      http://www.mediafire.com/download/xzlbgx...rms%29.zip
      Samples:
      http://www.mediafire.com/download/4abmzq...les%29.rar
      System-Images:
      http://www.mediafire.com/download/zmz4fk...ges%29.zip

      اضافه شد: فایل های adb.bat + adb.exe + AdbWinApi.dll + zipalign :
      http://www.basic4android.org/attachments...winapi.rar


      تمامی فایل ها تست شده و قابل نصب بر روی تمام ویندوزها می باشند
      پسورد تمام لینک های بالا:
      www.basic4android.org

      آموزش کامل چگونگی نصب و راه اندازی Basic4Android بعد از دانلود تمام ابزارهای بالا:

      ابتدا Java JDK بر حسب سیستم خودتون رو نصب کنید.

      بعد از آن به سراغ نصب Android SDK میریم:
      اندروید SDK را در محلی به جز درایو ویندوز نصب کنید به صورتی که دائمی باشد و در صورت تعویض ویندوز اندروید SDK و اطلاعات آن از بین نرود.
      مثلا من در این مسیر نصب خودم رو انجام میدم: ( توجه کنید توی پوشه نصب Android SDK از فاصله استفاده نکنید... یعنی حروف به هم چسبیده باشند )

      G:\android-sdk(32.0.2)

      حالا چک کنید که تمام پوشه های زیر در Android SDK وجود داشته باشد. هر پوشه ای که وجود نداشت را بسازید تا دقیقا مطابق تصویر زیر شود:

      لیست متنی پوشه ها:
      add-ons
      build-tools
      platforms
      platform-tools
      samples
      system-images
      tools

      تک تک به سراغ پوشه ها میریم:
      add-ons را خالی میگذاریم !

      build-tools :
      پوشه android-4.4.2 را همراه با فایل های موجود در آن که در پوشه دانلود شده build-tools_r19.0.3-windows وجود دارد را در build-tools کپی کنید

      platforms :
      پوشه __MACOSX و پوشه android-14 که در پوشه android-14 ای که مربوط به platforms است را در platforms کپی کنید

      platform-tools :
      تمام فایل ها و پوشه های موجود در platform-tools_r19.0.1-windows\platform-tools که دانلود کرده اید را در platform-tools کپی کنید:
      [تصویر: 32_files_in_platform_tools.png]


      samples :
      فایل android-14 موجود در android-14 دانلود شده مربوط به samples را در داخل پوشه samples کپی کنید.

      system-images :
      فایل android-14 موجود در android-14 دانلود شده مربوط به system-images را در داخل پوشه system-images کپی کنید.

      tools :
      این رو توجه کنین و یادتون نره چون در غیر این صورت با خطا مواجه میشید. باید حتما 1 بار این فایل رو اجرا کنید:
      فایل adb پیوست شده را دانلود و چهار فایل adb.exe و adb.bat و AdbWinApi.dll و zipalign.exe را درون پوشه tools بریزید
      ( بعد از اتمام کار و راه اندازی کامل Basic4Android لازم است قبل از اجرای Run AVD Manager فایل adb.bat را یک بار اجرا کنید )


      نصب Basic4Android و Patch کردن آن :
      بعد از نصب خود برنامه ی Basic4Android که آخرین مرحله است سراغ به Keygun کردن آن میرسد.
      فایل b4a-gen را در مسیر نصب Basic4Android کپی کنید مثلا در این مسیر:
      D:\Program Files (x86)\Anywhere Software\Basic4android

      b4a-gen.exe را اجرا کنید و یک email اختیاری مثلا support@basic4android.org را وارد کنید و بعد بر روی گذینه Generate Lisence File کلیک کنید
      تا فایل Lisence ساخته شود.
      حالا برنامه Basic4Android را باز کنید و ایمیل وارد کرده در b4a-gen.exe را که همان support@basic4android.org میشود را وارد کنید.

      خب الان Basic4Android شما کاملا نصب شده و فقط مونده که 3 تا مسیر به برنامه بدیم:
      از منو Tools گذینه Configure Paths را انتخاب کنید:

      http://s6.picofile.com/file/8203724150/config.jpg

      در قسمت اول که javac.exe است باید آدرس فایل javac.exe که بعد از نصب Java JDK به وجود آمده است را بدهید مثلا:
      D:\Program Files\Java\jdk1.7.0_40\bin\javac.exe

      در قسمت android.jar باید آدرس فایل android.jar موجود در مسیر نصب sdk و پوشه platforms و android-14 وجود دارد را بدهید مثلا:
      G:\android-sdk(23.0.2)\platforms\android-14\android.jar

      در قسمت Additional Libraries باید آدرس فایل Library موجود در مسیر نصب Basic4Android را بدهید مثلا:
      D:\Program Files (x86)\Anywhere Software\Basic4android\Libraries

      سپس OK کنید.

      مرحله آخر:
      از منو Tools گذینه Run AVD Manager را انتخاب کنید تا باز شود.
      چون بار اول است باید یک AVD بسازیم . بر روی گذینه Create کلیک کنید.
      AVD Name: Android-14
      Device: 3.2" HVGA silder (ADP1) (320×480: ,dpi
      Target: Android4.0- API Level 14
      CPU/ABI: ARM (armeabi-v7a
      Hardware Keyboard present را تیک بزنید تا فعال شود.
      Skin: Skin with dynamic hardware controls
      SD Card: Size 500 MiB

      سایر تنظیمات را دست نزدید.
      [تصویر: armeAbi.jpg]

      OK را بزنید

      نصب و تمامی تنظیمات به پایان رسید.


      پسورد فایل پیوست شده : برنامه نویسان بیسیک4اندروید

      http://www.basic4android.org
      پسورد اشتب بود خودتون عقب جلو کنیدbig grin

      منبع :
      http://basic4android.org/index.php?showtopic=4
      --
      برای دانلود آموزش تصویری نصب تمامی ابزارها به تاپیک زیر مراجعه کنید :
      http://www.basic4android.org/showthread....8%B3%DB%8C


      اگه ناقص بود ابزارها اینجا رو ببینید winking:
      http://basic4android.org/index.php?/topi...%88%D8%B1/
      دانلود b4a ورژن 5 ریتیل کامل :
      http://s3.picofile.com/file/8203723968/B...l.rar.html

      رفع خطای CPU/ABI : "No system images installed for this target" برای basic4android یا b4a:
      سوال :
      من برنامه را نصب کردم اما در حال حاظر 2 مشکل دارم.
      1 هنگامی که sdk رو بازمیکنم یه ارور میده ومیره نمیدونم چیه ولی احتمالا به مشکل دومم متصل هست
      2 هنگامی که Avd رو اجرا میکنم و crate رو میزنم اطلا عات رو طبق آموزش شما در پنجره ظاهر شده برایم وارد میکنم اما در آخر دکمه ی ok غیر فعال باقی می ماند وفعال نمیشود که من اوکیش کنم.
      خواهش میکنم من دو عکس مربوط به ۲ مشکلم برای شما upload کردم لطفا هرچه سریعتر مشکلمو به خبر بدید.

      جواب :

      [تصویر: avd.jpg]


      در هنگامی که می خواید یک AVD=android virtual device یا دستگاه مجازی اندروید ایجاد کنید ممکنه با خطای پیدا کردن system images مواجه بشیم.

      برای رفع این مشکل، دو نکته مهم رو باید حتما رعایت کنید:

      به احتمال زیاد مسیرandroid.jar رو توی b4a درست config کانفیگ نکردید.

      پوشه ی android-14 موجود در فایل zip دانلود شده از لینک زیر رو داخل پوشه system-images در مسیر

      AppData\Local\android\android-sdk\system-images

      کپی کنید:

      https://www.mediafire.com/?18qpqdkz3cq8oxm


      بعد از نصب می تونید برید ببینید ARM -ABI (ای آر ام ای بی آی) نصب شده:
      http://i.stack.imgur.com/GQal9.jpg
      حالا basic4android رو باز کنید و از منوی Tools گزینه ی Configure paths رو انتخاب کنید و جلوی android.jar مسیر درست سیستم خودتون رو بدید. برای من مسیرش اینه :

      C:\Users\userName\AppData\Local\android\android-sdk\platforms\android-14\android.jar

      به جای userName باید اسم کاربری دقیق سیستم خودتونو بدید.

      البته اگه بلد نیستید می تونید توی منوی Run بنویسید appdata و enter بزنید تا مسیر رو بیاره و برید توی local و سپس android و android-sdk و بقیشو دنبال کنید تا به مسیر دقیق دسترسی پیدا کنید.

      حالا راحت می تونید create AVD بزنید و یه دستگا ایجاد کنید و اونو Start کنید.
      [تصویر: arm_abi.jpg]
      http://s6.picofile.com/file/8183832434/avd_2.jpg
      باید ورژن 5 از b4a رو از جای درست دانلود کنی. واسه بچه ها دیشب توی یاهو حتی b4a version 5 نصب نمی شد من فرستادم صب شد.اینو دریافت کن :
      http://s6.picofile.com/file/8203723184/B4A_5_02_Retail.zip.html

      فایل های adb.bat + adb.exe + AdbWinApi.dll + zipalign دوباره گذاشتم چون توی لینک قبلی حذف شده بود :

      www.mediafire.com/download/nse7rzmsmmd2lie/adb-zipalign-winapi.zip


      اینم یه سری دیگه(منبع : http://androidsdk.blogfa.com/post/28)

      لینک دانلود :
       http://dl-ssl.google.com/android/repository/build-tools_r21.1.1-windows.zip
      http://dl-ssl.google.com/android/repository/build-tools_r21.1-windows.zip
      http://dl-ssl.google.com/android/repository/build-tools_r21.0.2-windows.zip
      http://dl-ssl.google.com/android/repository/build-tools_r21.0.1-windows.zip
      http://dl-ssl.google.com/android/repository/build-tools_r21-windows.zip

      اندروید 21 برای پوشه ی platforms:

      http://www.mediafire.com/download/nf40umk4kcqpf5i/android-21.rar


      خرید آموزش b4a فارسی با قیمت کم:
      http://gameover.blog.ir/1395/04/03/%DA%A9%D8%AA%D8%A7%D8%A8-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%A7%D9%85%D9%88%D8%B2%D8%B4-b4a-%D8%B3%D8%A7%D8%AE%D8%AA-%DA%AF%DB%8C%D9%85-%D8%A2%D9%88%D8%B1
      ۲ نظر موافقین ۰ مخالفین ۰ ۲۹ مرداد ۹۴ ، ۱۷:۰۸
      مدیرکل
      ۱ نظر موافقین ۰ مخالفین ۰ ۲۸ مرداد ۹۴ ، ۰۵:۳۱
      مدیرکل
      ۰ نظر موافقین ۰ مخالفین ۰ ۲۷ مرداد ۹۴ ، ۲۲:۱۵
      مدیرکل
      x رو به توان n می رسونه :

      power(x, n);


      ۰ نظر موافقین ۰ مخالفین ۰ ۲۷ مرداد ۹۴ ، ۱۹:۲۴
      مدیرکل
      ۰ نظر موافقین ۰ مخالفین ۰ ۲۵ مرداد ۹۴ ، ۲۲:۱۸
      مدیرکل

      ویرایش شد:( یکشنبه - ۲۵ مرداد ۱۳۹۴)

      ابتدا اسپرایت منوی ثابت رو با نام  s_menu ایجاد کنید سپس یک ابجکت به نام o_control بذارید روی room و سپس:

      ابتدا کد غلط :

      اینو بذارید توی رویداد Draw  :

      x1=view_xview+ window_get_width()/2-sprite_get_width(s_icon)/2
      y1=view_yview + sprite_get_height(s_icon)/2+10
      draw_sprite_ext(s_menu,image_index,x1,y1,image_xscale,image_yscale,image_angle,image_blend,image_alpha)

      [تصویر: menuSabet.gif]

      ---

      اما کدهای بالا یک باگ بزرگ داشت .
       اصلاح :

      نکته بسیار مهم:
      به جای window_get_width حتما از view_wport[0] و به جای window_get_height حتما از view_hport[0] استفاده کنید چون وقتی روم رو full screen می کنید ممکنه به هم بریزه. اما با view_hport و view_wport به هم نمی ریزه.winking

      مثال :
      توی رویداد Draw اسپرایت spr_menu رو اینطوری در بالا و وسط room و view ی فعلی نمایش میدیم:
      کد درست اینه :
      x1=view_xviewview_wport[0]/2-sprite_get_width(spr_menu)/2
      y1
      =view_yview sprite_get_height(spr_menu)/2+10
      draw_sprite_ext
      (spr_menu,image_index,x1,y1,image_xscale,image_yscale,image_angle,image_blend,image_alpha

      امضا:
      ۰ نظر موافقین ۰ مخالفین ۰ ۲۵ مرداد ۹۴ ، ۰۴:۱۸
      مدیرکل

      خب اول باید وارد سایت عدد بشید و در قسمت نمایش دهندگان وارد رسانه های من بشید روی رسانه جدید کلیک کنید پکیج نیم برنامتون بنویسید و تایید رو بزنید حالا کتاب خانه عدد رو از اینجا دانلود کنید و بریزید داخل قسمت لایبری b4a حالا b4a رو باز کنید
      کتابخانه های adad و reflection رو فعال کنید
      این کدو به مانفیست ادیتورتون اضافه کنید

      نقل قول :AddApplicationText(
      <activity
      android:name="ir.adad.AdadActivity"
      android:theme="@android:style/Theme.Dialog">
      </activity>
      <meta-data android:name="ir.adad.token" android:value="YOUR_TOKEN"></meta-data>
      <meta-data android:name="ir.adad.test_mode" android:value="true"></meta-data>
      )

      داخل قسمت your-token اون شناسه ای که بهتون داخل قسمت جزییات رسانه های من داده کپی کنید


      این کدم به صفحه ای که میخواین توش تبلیغ باشه بریزید
      نقل قول :
      Sub Activity_Create(FirstTime As Boolean)
      Dim verticalPosition As String = "bottom" '"top" or "bottom"
      Dim horizontalPosition As String = "center" '"left", "right" or "center"
      Dim r As Reflector
      Dim args(3) As Object = Array As Object(r.GetActivity, verticalPosition, horizontalPosition)
      Dim types(3) As String = Array As String("android.app.Activity", "java.lang.String", "java.lang.String")
      r.RunStaticMethod("ir.adad.AdadB4APlugin", "createAdView", args, types)
      End Sub


      اگر قبلا به برنامه اجاره یه دسترسی به اینترنت ندادید این کدو به مانفیست اضافه کنید
      نقل قول :AddPermission(android.permission.INTERNET)



      حالا برنامه رو تست کنید اگر درست بود زیر برنامتون یه نوشته میاد که سیستم درست کار میکنه

      توجه موقع انتشار برنامه در مانفیست ادیتور:
      نقل قول :<meta-data android:name="ir.adad.test_mode" android:value=" True "></meta-data>

      True را به false تغییر بدید.
      منبع :
      http://promakers.ir/showthread.php?tid=11647


      خرید آموزش b4a فارسی با قیمت کم:
      http://gameover.blog.ir/1395/04/03/%DA%A9%D8%AA%D8%A7%D8%A8-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%A7%D9%85%D9%88%D8%B2%D8%B4-b4a-%D8%B3%D8%A7%D8%AE%D8%AA-%DA%AF%DB%8C%D9%85-%D8%A2%D9%88%D8%B1
      ۰ نظر موافقین ۰ مخالفین ۰ ۲۴ مرداد ۹۴ ، ۲۲:۱۲
      مدیرکل

      نکته ۱: جم های خود را ذخیره کنید

       

      زمانیکه بازی را شروع می کنید، ۵۰۰ جم دارید. در صورت ساخت و ساز، ۵۰ جم را برای کامل کردن ساختمان سازی از دست می دهید. اما می توانید جم هایتان را ذخیره کرده تا بیلدرهای(کارگران) بیشتری را خریده و ساخت و ساز را سریع تر انجام بدهید. هزینه های هر بیلدر به صورت زیر است:
      بیلدر ۲: ۲۵۰ جم
      بیلدر ۳: ۵۰۰ جم
      بیلدر ۴: ۱۰۰۰جم
      بیلدر ۵: ۲۰۰۰ جم
      بیلدرهای 3 سریع بدست می آیند، اما بیلدرهای 4 و 5 ، معمولاً دیرتر تولید می شوند. بیلدرهای بیشتر، به شما اجازه می هند تا ساختمانهای بیشتری را بسازید و بنابراین می توانند بسیار به شما کمک کنند. اگه بتوانید پیروزیهای بیشتری بدست بیاورید، می توانید بیلدر 4 را در عرض چند ماه بدست بیاورید، بدون اینکه لازم باشد چیزی بخرید. اگه میخواهید بیلدرهای پنجم را هم بدست بیاورید، باید بیشتر تلاش کرده و پیروزی های بیشتری را بدست بیاورید.


      نکته ۲: افراد ارزانی را انتخاب کنید

      یکی از بزرگترین اشتباهاتی که تازه کاران انجام میدهند، این است که به هزینه ی هر فرد، توجهی نمی کنند. اگرچه، غول ها(جاینت ها)، عالی هستند، اما بسیار گران تر از بربری ها می باشند. در مراحل بالاتر، دراگون هافوق العاده اند، اما آنها از غول ها بسیار گران ترند. به عامل زمان هم باید توجه کرد. درست است که ویزاردها، بسیار قوی تر از کمانداران هستند، اما هم هزینه بیشتری دارند و هم 8 دقیقه طول میکشد تا ساخته شوند. در حالیکه، ۴کماندار را می توانید در کمتر از ۲ دقیقه بسازید. پس اگر به دنیال ذخیره ی منابعتان هستید، باید افراد ارزانی را انتخاب کنید. البته باید توجه داشته باشید که بهترین افراد، به سطح(لول) شما بستگی دارد.


      نکته ۳: اسپل ها را تنها هنگامیکه نیاز است، استفاده کنید

      اسپل ها بسیار گران هستند و مدتی طول میکشد تا ساخته شوند. اگرچه اسپل ها بسیار موثر و کارامد هستند، اما باید مطمئن شوید نبردی که در حال انجام ان هستید، استفاده از اسپل را ضمانت می کند.
      اسپل خشم در 23000 اکسیر، و اسپل شفابخش در 15000 اکسیر، شروع می شود.


      نکته 4: تاون هال خود را کم کم ارتقا دهید

      تاون هال، یکی از مهمترین چیزهایی است که باید در بازی clash of clans بدانید. اگر تاون هال شما از تاون هال دشمنتان بیشتر باشد، میزان غنائمی که می توانید ازحریف بگیرید کاهش می یابد. اگر تاون هال شما، یک سطح از دشمنتان بالاتر باشد، تنها 90% غنائم را می توانید غارت کنید. اگر این اختلاف به سه سطح برسد، تنها 25% ، و برای اختلاف 4 سطح یا بیشتر، تنها 5% غنائم موجود را می توانید غارت کنید. در نتیجه، پیشنهاد می کنیم به تاون هال 4 رفته و در این تاون هال بمانید وساختارهای دفاعی، اردوگاه های سربازان و کاوش خود را به بهترین حالت ارتقا دهید. حتی می توانید دیوارهای خود را نیز ، قبل از رفتن به تاون هال 5، به حداکثر ارتقا دهید. این فرآیند را برای هر سطحی(لولی)، تکرار کنید.

      نکته 5: بسرعت بازی را شروع کنید

      وقتی برای اولین بار، کلش آف کلنز را بازی می کنید، سه روز شیلد(محافظت) دریافت می کنید. اما، حتی اگر شیلد شما از بین رفته باشد، به دلیل نکته ی 4، افراد اندکی، تمایل دارند به شما حمله کنند. بنابراین وقتی به منابع بیشتری نیاز دارید، بدون ترس از انتقام، بازی را شروع کنید.

       نکته 6: از ویژگی «NEXT» ، زیاد استفاده کنید

      اگر چه با زدن دکمه ی next مقدار اندکی از طلای شما، برای رفتن به پایگاه بعدی، کم می شود، اما هنگام ایجاد منابع یا سربازان، شما همیشه باید، با دکمه ی NEXT ، بهترین پایگاه را بیابید. بنابراین، قبل از حمله به یک پایگاه، برای جلوگیری از هدر رفتن افرادتان، مطمئن شوید که بهترین پایگاه را برای حمله انتخاب کرده اید. مراقب باشید هیچگاه، اندک طلای باقیمانده ی خود را برای ارتقا خرج نکنید و این مقدار طلا را برای استفاده از ویژگی NEXT ،نگه دارید.


      نکته 7: قلعه ی گروه را در مرکز پایگاه قرار دهید

      قلعه ی گروه، شاید مهم ترین ساختار دفاعی در این بازی باشد، اما تنها به شرطی که آن را در مرکز پایگاهتان قرار دهید. زیرا هنگامیکه، افراد دشمن، وارد محدوده ی قلعه ی گروه می شوند،(اگر محدوده ی وسیعی داشته باشد)، افراد شما خارج قلعه را پر کرده و به افراد در حال حمله ی دشمن، حمله خواهند کرد.توجه کنید که سربازهای قلعه ی گروه، قادر به جهش از دیوارهای خودتان هستند.
      اگر قلعه ی گروه را خارج از پایگاه قرار دهید، دشمن می تواند افراد داخل قلعه ی گروه را، فریب داده و بسادگی آنها را خارج از محدوده ی قلعه، بکشد. اگر قلعه را داخل پایگاه، نگه دارید، دشمن، برای گرفتن پایگاهتان، هم از افراد قلعه و هم ازساختارهای دفاعی، آسیب خواهد دید.
      اگر می خواهید در تاون هال خود بمانید، درخواست کماندار بدهید، زیرا کمانداران، اغلب، افراد را از پشت دیوار، مورد هدف قرار می دهند؛ که به آنها اجازه می دهد تا بدون آسیب دیدن، غول ها و بربری ها را سرنگون کنند. بازکنانی که در سطوح بالایی هستند، شاید افراد متفاوتی، مثل دارگون ها انتخاب کنند، اما این امر به گروهی نیاز دارد که این سربازان را بدهد.
      توجه کنید که این نکته، عملاً تنها برای بازیکنان تاون هال 7، و بالاتر به کارگرفته می شود. در تاون هال های پایین تر، ساختمان کافی برای جلوگیری از فریب خوردن یا غارت کردن افراد در قلعه ی گروه را، ندارید. تاون هال 7، هنوز قابلیت فریب خوردن دارد، اما محکم تر است. در تاون هال 8و بالاتر، دشمن مجبور می شود تا ساختمان ها یا تعدادی از افراد را برای بیرون راندن سربازان از قلعه ی گروهتان، تخریب کند.


      نکته 8: به دارک اکسیر اهمیت فراوانی دهید

      وقتی به تاون هال 7 یا بالاتر می رسید، منبعی که شما را محدود می کند، همیشه اکسیر تاریک است. معمولاً دارک اکسیر کافی را پس از حداکثر ارتقاهایی که به طلا و اکسیر مربوط اند، بدست می آورید. در نتیجه، دارک اکسیر را، نسبت به منابع دیگر، در بالاترین اولویت قرار دهید.

      منبع : گیم آور

      ۰ نظر موافقین ۰ مخالفین ۰ ۲۴ مرداد ۹۴ ، ۲۱:۲۵
      مدیرکل
      با دستور yield می گیم چند ثانیه صبر کن بعدش برو دستور بعدی. مثال :
      using UnityEngine;
      using System.Collections;
      
      public class ExampleClass : MonoBehaviour {
          IEnumerator Example() {
              print(Time.time);
              yield return new WaitForSeconds(5);
              print(Time.time);
          }
      };

      ۲ نظر موافقین ۰ مخالفین ۰ ۲۴ مرداد ۹۴ ، ۱۸:۰۸
      مدیرکل

      می دونیم که در حالت پیشفرض مسیر ذخیره سازی روی حافظه ی داخلی هست(Write Access =Internal Only)

      دستور Application.persistentDataPath در یونیتی مسیر  SD card یا حافظه ی بیرونی رو می ده(به شرطی که گزینه ی  External Write Access  در Player Settings رو فعال کنیم) این یعنی Write Access = External (SDCard)

      ----
       Application.dataPath
       Application.streamingAssetsPath
       Application.temporaryCachePath
      EditorApplication.applicationContentsPath
       EditorApplication.applicationPath
      Directory.GetCurrentDirectory()  مسیر روت یا ریشه رو می ده
      PlayerSettings.Android.forceSDCardPermission مقدار بولین برای دسترسی به کارت جافظه موبایل
      یه گزینه هم هست به اسم  WRITE_EXTERNAL_STORAGE اگه Enable باشه کل دادها به مسیر  /mnt/sdcard/Android/data/data/com..... ارجاع داده می شن و اجازه ذخیره روی SD card

      ۲ نظر موافقین ۰ مخالفین ۰ ۲۴ مرداد ۹۴ ، ۱۶:۴۱
      مدیرکل


      #Region  Project Attributes
          #ApplicationLabel: B4A Example
          #VersionCode: 1
          #VersionName:
          'SupportedOrientations possible values: unspecified, landscape or portrait.
          #SupportedOrientations: unspecified
          #CanInstallToExternalStorage: False
      #End Region

      ApplicationLabel جایی هست که شما اسم برنامه خودتون رو می نویسید یعنی اسمی که کاربر اون رو می بینه.
      VersionCode جایی هست که شما ورژن برنامه خودتون رو وارد می کنید که می تونید اعداد 1,2,3,4,5,... در اون قرار بدید.
      VersionName این جا جایی هست که شما اسم ورژن خودتون رو وارد می کنید حتما دیدید که در بازار یا جاهای دیگر نوشته ورژن 1.0.6 این همونه که البته می تونید در آن از حروف هم استفاده کنید.

      SupportedOrientations شما در این جا می تونید از سه کلمه portrait یا landscape یا unspecified استفاده کنید اگر از کلمه unspecified استفاده کنید برنامه هم در حالت افقی و هم در حالت عمودی اجرا می شه ولی اگر از کلمه landscape استفاده کنید فقط در حالت افقی و اگر از portrait استفاده کنید فقط در حالت عمودی اجرا می شه.

      CanInstallToExternalStorage اگر این کلمه مساوی False باشه برنامه داخل حافضه جانبی گوشی ذخیره نمی شه اما اگر مسای true باشه برنامه بر روی حافضه جانبی ذخیره می شه.

      نکته :اون خطی که اولش ' هست یعنی به صورت کامنت هست.
      منبع :
      http://barnamenevis.org/showthread.php?4...54f59acfa6
      ۰ نظر موافقین ۰ مخالفین ۰ ۲۴ مرداد ۹۴ ، ۰۶:۲۰
      مدیرکل
      طبق تحقیقم شاید بتونید از این کدها الهام بگیرید :
      var myTexture: Texture2D;
        
        function Startup()
        {
            SaveTextureToFile( myTexture,"picture.png");
        }
      
      +
      
      System.IO.File.WriteAllBytes("picture.png", myTexture.EncodeToPNG()); 
      
      +
      
      System.IO.File.WriteAllBytes(Application.dataPath + "/"+"picture5886.png", texture2.EncodeToPNG());    //app path n1!

      ۱ نظر موافقین ۰ مخالفین ۰ ۲۴ مرداد ۹۴ ، ۰۵:۳۹
      مدیرکل
      منبع:gameover.blog.ir
      //gameover.blog.ir
      Dim
      MP As MediaPlayer MP.Initialize() MP.Load(File.DirAssets, "fereydun_asarayi.mp3") MP.Looping = True MP.Play

      برای استاپ و پلی مجدد و ... هم اینا :
      MP.Pause
      MP.Play
      MP.Stop




      خرید آموزش b4a فارسی با قیمت کم:
      http://gameover.blog.ir/1395/04/03/%DA%A9%D8%AA%D8%A7%D8%A8-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%A7%D9%85%D9%88%D8%B2%D8%B4-b4a-%D8%B3%D8%A7%D8%AE%D8%AA-%DA%AF%DB%8C%D9%85-%D8%A2%D9%88%D8%B1
      ۱ نظر موافقین ۰ مخالفین ۰ ۲۴ مرداد ۹۴ ، ۰۵:۳۰
      مدیرکل
      منبع خارجی :
      http://www.metatags.info/all_meta_tags

      وقتی شما اطمینان داری که وبسایت در دایرکتوری مثل DMOZ (ODP) یا دایرکتوری یاهو ثبت شده ، یه چیزی رو باید همیشه بدونی. اونم اینه که اغلب پیش میاد از عنوان و توضیح مختصری که برای وبسایت خود در دایرکتوری ها استفاده کردید موتور های جستجو استفاده می کنن و عنوان و توضیح مختصری که دستی وارد کردید را نادیده میگیرن. برای اینکه از چنین امری جلوگیری کنیم باید یکی از دو تگ زیر را در بخش هدر بنویسیم.
      کد:
      <meta name="ROBOTS" content="NOODP" />
      <meta name="ROBOTS" content="NOYDIR" />
      فرق این دو تا با هم در اینه که NOYDIR برای دایرکتوری یاهو هست و NOODP برای دایرکتوری گوگل یا همون DMOZ خودمون که MSN هم بهره می بره از همین تگ.

      البته میشه از هر دو همزمان استفاده کرد به صورت زیر:
      کد:
      <meta name="ROBOTS" content="NOODP,NOYDIR" />


      موفق باشید،
      منبع :
      http://forum.iranphp.org/Thread-NOODP-%D9%88-NOYDIR-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%85%D8%AA%D8%A7-%D8%AA%DA%AF-%D8%B1%D9%88%D8%A8%D9%88%D8%AA-%D9%87%D8%A7-%D8%B1%D8%A7-%D8%A8%DB%8C%D8%B4%D8%AA%D8%B1-%D8%A8%D8%B4%D9%86%D8%A7%D8%B3%DB%8C%D8%AF
      ۰ نظر موافقین ۰ مخالفین ۰ ۲۳ مرداد ۹۴ ، ۰۷:۱۹
      مدیرکل
      ۰ نظر موافقین ۰ مخالفین ۰ ۲۳ مرداد ۹۴ ، ۰۶:۴۴
      مدیرکل

       منبع :gameover.blog.ir

      از کار انداختن دانلود عکس و انیمیشن های دانلودی به منظور هدر نرفتن پهنای باند شما:

      • Image Block - "Image Block adds a toggle button that conditionally blocks/allows loading of images on webpages."
      • QuickJava - adds buttons for turning on and off: images, animated images, JavaScript, Flash, Java... a lot of stuff that may or may not sound interesting to you
      ۰ نظر موافقین ۰ مخالفین ۰ ۲۳ مرداد ۹۴ ، ۰۵:۳۶
      مدیرکل
      منبع :gameover.blog.ir
      کاری کنید که هر 1 ثانیه مرورگر رفرش بشه یا مثلا زمان رو با html و php نشون بدید:

      <head>
      <meta http-equiv="refresh" content="5">
      </head>
      <?php

      header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
      header("Cache-Control: post-check=0, pre-check=0", false);
      header("Pragma: no-cache");
      ?>

      <?php echo date('h:i:s A');?>


      ۰ نظر موافقین ۰ مخالفین ۰ ۲۲ مرداد ۹۴ ، ۲۱:۴۰
      مدیرکل

       منبع :gameover.blog.ir

      اینجا :
      C:\Users\userName\AppData\Local\Genymobile\Genymotion\ova
      مسیر بالا رو بلد نیستید توی منوی run بنویسید AppData

      ۰ نظر موافقین ۰ مخالفین ۰ ۲۰ مرداد ۹۴ ، ۱۶:۴۸
      مدیرکل

      منبع : sinusi.blog.ir

      سلام،دوستان همانطور که می دونید GenyMotion یک شبیه ساز آندروید هست.که می تونید اون رو از اینجا دانلود کنید.


      اما مشکل اصلی دانلود Virtual Device های اون هست که من در این پست لینکشون رو براتون میگذارم.


      Android 2.3.7 API 10


      Google Nexus One - 2.3.7 - API 10 - 480x800
      Google Nexus S - 2.3.7 - API 10 - 480x800
      Motorola Droid Razr - 2.3.7 - API 10 - 540x960
      Samsung Galaxy Note - 2.3.7 - API 10 - 800x1280
      Samsung Galaxy S2 - 2.3.7 - API 10 - 480x800
      Sony Xperia S - 2.3.7 - API 10 - 720x1280

      ================================

      Android 4.1.1 API 16

      Custom Phone 7\" - 4.1.1 - API 16 - 1024x600
      Google Galaxy Nexus - 4.1.1 - API 16 -720x1280
      Google Nexus 4 - 4.1.1 - API 16 - 768x1280
      Google Nexus S - 4.1.1 - API 16 - 480x800
      HTC Evo - 4.1.1 - API 16 - 720x1280
      HTC One X - 4.1.1 - API 16 - 720x1280
      HTC One XL - 4.1.1 - API 16 - 720x1280
      LG Optimus L3 II - 4.1.1 - API 16 - 240x320
      Motorola Droid Razr - 4.1.1 - API 16 - 540x960
      Samsung Galaxy Note - 4.1.1 - API 16 - 800x1280
      Samsung Galaxy Note 2 - 4.1.1 - API 16 - 720x1280
      Samsung Galaxy S2 - 4.1.1 - API 16 - 480x800
      Samsung Galaxy S3 - 4.1.1 - API 16 - 720x1280
      Sony Xperia S - 4.1.1 - API 16 - 720x1280

      ================================
      Android 4.1.1 API 16 Tablet

      Custom Tablet 10\" - 4.1.1 - API 16 - 2560x1600
      Google Nexus 7 - 4.1.1 - API 16 - 800x1280
      Motorola Xoom - 4.1.1 - API 16 - 800x1280
      Sony Xperia Tablet S - 4.1.1 - API 16 - 1280x800
      Sony Xperia Tablet Z - 4.1.1 - API 16 - 1920x1200

      ================================

      Android 4.2.2 API 17

      Custom Phone 7\" - 4.2.2 - API 17 - 1024x600
      Google Galaxy Nexus - 4.2.2 - API 17 -720x1280
      Google Nexus 4 - 4.2.2 - API 17 - 768x1280
      Google Nexus S - 4.2.2 - API 17 - 480x800
      HTC Evo - 4.2.2 - API 17 - 720x1280
      HTC One X - 4.2.2 - API 17 - 720x1280
      HTC One XL - 4.2.2 - API 17 - 720x1280
      LG Optimus L3 II - 4.2.2 - API 17 - 240x320
      Motorola Droid Razr - 4.2.2 - API 17 - 540x960
      Samsung Galaxy Note - 4.2.2 - API 17 - 800x1280
      Samsung Galaxy Note 2 - 4.2.2 - API 17 - 720x1280
      Samsung Galaxy S2 - 4.2.2 - API 17 - 480x800
      Samsung Galaxy S3 - 4.2.2 - API 17 - 720x1280
      Sony Xperia S - 4.2.2 - API 17 - 720x1280

      ================================

      Android 4.2.2 API 17 Tablet

      Custom Tablet 10\" - 4.2.2 - API 17 - 2560x1600
      Google Nexus 10 - 4.2.2 - API 17 - 2560x1600
      Google Nexus 7 - 4.2.2 - API 17 - 800x1280
      Sony Xperia Tablet Z - 4.2.2 - API 17 - 1920x1200

      ================================

      Android 4.3 API 18

      Custom Phone 7\" - 4.3 - API 18 - 1024x600
      Google Galaxy Nexus - 4.3 - API 18 -720x1280
      Google Nexus 4 - 4.3 - API 18 - 768x1280
      Google Nexus S - 4.3 - API 18 - 480x800
      HTC Evo - 4.3 - API 18 - 720x1280
      HTC One X - 4.3 - API 18 - 720x1280
      HTC One XL - 4.3 - API 18 - 720x1280
      LG Optimus L3 II - 4.3 - API 18 - 240x320
      Motorola Droid Razr - 4.3 - API 18 - 540x960
      Samsung Galaxy Note - 4.3 - API 18 - 800x1280
      Samsung Galaxy Note 2 - 4.3 - API 18 - 720x1280
      Samsung Galaxy S2 - 4.3 - API 18 - 480x800
      Samsung Galaxy S3 - 4.3 - API 18 - 720x1280
      Sony Xperia S - 4.3 - API 18 - 720x1280

      ================================

      Android 4.3 API 18 Tablet

      Custom Tablet 10\" - 4.3 - API 18 - 2560x1600
      Google Nexus 10 - 4.3 - API 18 - 2560x1600
      Google Nexus 7 - 4.3 - API 18 - 800x1280
      Sony Xperia Tablet Z - 4.3 - API 18 - 1920x1200

      ================================

      Android 4.4.2 API 19

      Custom Phone 7\" - 4.4.2 - API 19 - 1024x600
      Google Galaxy Nexus - 4.4.2 - API 19 -720x1280
      Google Nexus 4 - 4.4.2 - API 19 - 768x1280
      Google Nexus S - 4.4.2 - API 19 - 480x800
      HTC Evo - 4.4.2 - API 19 - 720x1280
      HTC One X - 4.4.2 - API 19 - 720x1280
      HTC One XL - 4.4.2 - API 19 - 720x1280
      LG Optimus L3 II - 4.4.2 - API 19 - 240x320
      Motorola Droid Razr - 4.4.2 - API 19 - 540x960
      Samsung Galaxy Note - 4.4.2 - API 19 - 800x1280
      Samsung Galaxy Note 2 - 4.4.2 - API 19 - 720x1280
      Samsung Galaxy S2 - 4.4.2 - API 19 - 480x800
      Samsung Galaxy S3 - 4.4.2 - API 19 - 720x1280
      Sony Xperia S - 4.4.2 - API 19 - 720x1280

      ================================
      Android 4.4.2 API 19 Tablet

      Custom Tablet 10\" - 4.4.2 - API 19 - 2560x1600
      Google Nexus 10 - 4.4.2 - API 19 - 2560x1600
      Google Nexus 7 - 4.4.2 - API 19 - 800x1280
      Sony Xperia Tablet Z - 4.4.2 - API 19 - 1920x1200

      بعد از دانلود فایل رو با پسوند ova در فولدر مربوطه
      C:\Users\[Your Name]\AppData\Local\Genymobile\Genymotion\ova
       قرار بدید، بعد برید و داخل Genymotion دستگاه مربوط به اون فایل رو ایجاد کنید،بدون معطلی دستگاه براتون ساخته میشه و نیازی به دانلود نیست.

      برگرفته شده از sinusi.blog.ir
      ۰ نظر موافقین ۰ مخالفین ۰ ۲۰ مرداد ۹۴ ، ۱۶:۴۰
      مدیرکل

       منبع :gameover.blog.ir

      برای اینکه دکمه توی صفحه view بمونه و حتی راه بری بازم از صفحه خارج نشه باید به طور داینامیک توی رویداد draw بیای x و y آبجکت دکمه رو بذاری توی x و y دوربین(view):

      کد PHP:
      x=view_xview+window_get_region_width()/2-sprite_width/2
      y
      =view_yview 
      view_xview و y=view_yview مختصات ابتدای view رو می ده(بالا و سمت چپ)
      -
      window_get_region_width()/2-sprite_width/2 فرمولی هست که نصف پهای پنجره رو منهای نصف پهنای اسپرایت می کن تا ابجکت از لحاظ عرضی در وسط صفحه بیفته و بالای صفحه.
      فرمول بالا واسه اسپرایت بود . اگه بخوای دکمه رو بذاری اینطوری بذار:

      اینم سورس کامل برای ساخت دکمه ی لمسی یا کلیدهای مجازی اندریود در گیم میکر استادیو:
      [تصویر: spr_Down_0.jpg][تصویر: spr_Up_0.jpg][تصویر: spr_Right_0.jpg][تصویر: spr_Left_0.jpg]
      http://s6.picofile.com/file/8192395026/T...l.zip.html

      --
      اینم توضیحات امین بلاگ 76 :

      ساخت کلید مجازی با روش ساده ی خود گیم میکر استدیو:
      1.یک آبجکت به اسم دلخواه مثلا obj_vkey_crtl بسازید
      2.برای ایجاد کردن هر کدوم از کلید های دلخواه باید از تابع زیر استفاده کنید و مقدار دهی کرده و داخل یک متغیر بریزید
      تابع:
      کد:
      virtual_key_add(x, y, w, h, keycode);
      x,y :مختصات قرار گرفتن کلید ها داخل رابط کاربری (gui) هست
      w,h :طول و عرض کلید ها
      keycode: کلیدی که قراره کلید مجازی ما نماینده اون کلید باشه مثلا vk_left
      مثال:
      کد:
      up = virtual_key_add(32, 32, 64, 64, vk_up);

      3.الان کلید مجازی ساخته شده و فقط کافیه اون رو داخل GUI بازی به روشی که الان میگم draw کنید:
      داخل ایونت Draw GUI همون آبجکت برای نمایش کلید ها باید از تابع زیر استفاده کنید:
      کد:
      virtual_key_show(key)
      که به جای key باید متغیری که کلید ساخته شده رو داخلش ریختیم بنویسیم مثلا ما در مثال ساخت کلید ، کلید ساخته شده رو داخل متغیری به اسم up ذخیره کردیم بنابر این در تابع ذکر شده باید به جای key ، نام متغیر یعنی up رو بنویسیم
      (لازم به ذکره که بگم بخش سوم این آموزش الزامی نیست یعنی میتونید کلید ها رو قابل نمایش نذارید)
      [تصویر: vkek.gif]
      سورس گرافیکی امین بلاگ 76 :
      http://s4.picofile.com/file/7858193759/android_virtual_key_aminblog76_.rar.html


      http://s4.picofile.com/file/7858145585/1.jpg

      http://s4.picofile.com/file/7858148602/2.jpg

      در مورود سورس امین بگم کار بهینه ای کرده.

      کارش به این صورته که اومده فقط یه اسپرایت فلش جهت دار گذاشتی و در چهار جهت اونو چرخش داده. این کارو به وسیله ی تغییر پارامتر (پارامتر دوم) subimage در تابع draw_sprite مقدار دادن 0(باعث چرخش اسپرایت به بالا میشه) و 1(پایین) و 2(چپ) و 3(راست). اون قسمت کد که توضیح دادم اینه :
      کد PHP:
      draw_sprite(spr_keys,0,32*3,32)

      //virtual_key_show(key_down)
      draw_sprite(spr_keys,1,32*3,32*5)

      //virtual_key_show(key_left)
      draw_sprite(spr_keys,2,32,32*3)

      //virtual_key_show(key_right)
      draw_sprite(spr_keys,3,32*5,32*3

      منبع :

      http://promakers.ir/showthread.php?tid=5761&pid=69129#pid69129
      ۲ نظر موافقین ۰ مخالفین ۰ ۱۸ مرداد ۹۴ ، ۱۵:۰۰
      مدیرکل

       منبع :gameover.blog.ir

      توی کد فلش چپ اینو بذارید

      image_scale = -1

      توی کد فلش راست اینو:

      image_scale =+1

      اجرا کنید .

      وقتی فلش چپ می زنید کاراکتر به چپ نیگا می کنه و وقتی فلش راست می زنید کاراکتر به راست نیگا می کنه.

      اگه نمونه یونیتی رو خواستید باید با transform.localScale فکر می کنم کار کنید. سوال بود بپرسید

      ۰ نظر موافقین ۰ مخالفین ۰ ۱۸ مرداد ۹۴ ، ۱۰:۳۹
      مدیرکل

       منبع :gameover.blog.ir

      نکته : این کد غلطه و رویداد radioButton_Check براش عمل نمی کنه :

      RadioButton1.Initialize("")

      RadioButton2.Initialize("")

      RadioButton3.Initialize("")

      RadioButton4.Initialize("")

      حالا این کد درسته :

      RadioButton1.Initialize("RadioButton1")

      RadioButton2.Initialize("RadioButton2")

      RadioButton3.Initialize("RadioButton3")

      RadioButton4.Initialize("RadioButton4")
      ۰ نظر موافقین ۰ مخالفین ۰ ۱۷ مرداد ۹۴ ، ۲۳:۰۹
      مدیرکل
      ۰ نظر موافقین ۰ مخالفین ۰ ۱۷ مرداد ۹۴ ، ۲۲:۲۴
      مدیرکل

       منبع :gameover.blog.ir

      خیلی ساده ::D


      قبل از insert یک select رو اجرا کن با where column_name=onsor_voroodi

      اگه وجود داشت و تعداد سطرهای Cursor بیش از صفر شد یعنی تکراری هست و نباید درج کنی.

      sajjad3011

      ۰ نظر موافقین ۰ مخالفین ۰ ۱۷ مرداد ۹۴ ، ۱۸:۴۵
      مدیرکل

      منبع :gameover.blog.ir
      این سورس رو مدت ها قبل به درخواست mgood ساخته بودم.
      درخواست کننده:alibar80
      سازنده:sajjad3011

      شات:
      [تصویر: light_small.gif]
      http://s3.picofile.com/file/8205001718/light.gif
      سورس:
      http://opizo.com/RrHWa1


      توضیح:
      در این سورس،توی اتاق تاریک نور آبی ایجاد می کنیم که هرجا player می ره دورش هست و اون ناحیه رو روشن می کنه.با گیم میکر 8.1 و ورژن های بالاتر باز کنید یا پسوند رو عوض کنید.

      ۰ نظر موافقین ۰ مخالفین ۰ ۱۷ مرداد ۹۴ ، ۱۶:۲۵
      مدیرکل

       منبع :gameover.blog.ir

      درخواست کننده:yasa
      سازنده: sajjad3011
      شات:

      :
      [تصویر: shot_small.gif]
      http://s3.picofile.com/file/8204983168/shot.gif
      سورس:
      http://s6.picofile.com/file/8204983150/i...1.zip.html
      توضیح :
      در این سورس می تونید با کلیک توی جاهای خالی هر room ستاره ایجاد کنید و با راست کلیک روی ستاره ها اونا رو destroy(حذف و نابود) کنید.
      با فشردن دکمه ی next به room بعدی و با فشردن دکمه ی previous به room قبلی می ریم.
      بعد از ایجاد ستاره در هر room برای ذخیره ی دائم و حتی بازیابی پس از بستن بازی و اجرای مجدد باید روی دکمه ی ذخیره کلیک کنید.
      اسم روم ها رو هم هرچی دوست دارید بذارید.سورس انعطاف لازم رو داره و اسم روم ها رو به صورت داینامیک تشخیص میده.
      -
      هر سورسی خواستید پ.خ کنید تا من بسازم.

      ۰ نظر موافقین ۰ مخالفین ۰ ۱۷ مرداد ۹۴ ، ۱۶:۲۵
      مدیرکل