درود مهمان گرامی! ثبت نام

امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
سوال:برخورد پلیر با دشمن
#21
یه مشکل جدیدohno
همونطور که گفتم در رابطه با مشکل قبلی که حل شد اینکارارو کردم که...
به دشمنم دوتا گیم آبجکت دادم و دوتا کد
تو کد گیم آبجکت جلویی نوشتم در صورت برخورد پلی باهاش انیمیشن مرگ پلیر و حمله دشمن پخش شه
گیم آبجکت عقبی نوشتم اگه پلیر بهش برخورد کرد دشمن انیمیشن مرگش پخش شه-گیم آبجکت جلویی نابود شه

مشکلم اینجاست که وقتی چنتا دشمن میذارم تو بازی...هرکدومشونو بزنم هربلایی سرشون بیارم اون بلا سر اولین دشمنی که تو بازی قرار دادم میاد',}و بقیه آروم آروم راه خودشونو میرن',}اگه به بقیه برخورد کنم بیخیال راهشونو میرن و دشمن اولیه انیمیشن حملش پخش میشه',}اگه با تیر بزنمشون بیخیال راهشونو میرن و دشمن اولیه گیم آبجکت جلوییش نابود میشه و میمیره',}چرا اینطوری شده چیکار کنم',}
شاید نه امروز... نه فردا... و نه روز دیگر... اما سرانجام همه چیز درست خواهد شد

بازی ها و نمونه کارهای من:


بازی قلب پرنده
پاسخ
#22
دشمن اولی رو Duplicate کردی ؟
پاسخ
#23
',}',}',}',}
میشه کدارو بدی؟
پاسخ
#24
باشه یه ساعت دیگه میذارمشون الان کار دارم .نه خب پریفبش کردم و از رو پریفب باز میذارمشون
کد دشمن
کد:
using UnityEngine;
using System.Collections;

public class Enemy : MonoBehaviour {
    public Animator anim;//انیماتور
    public int spead;


    void Start ()
    {
        anim.GetComponent <Animator >();

    }
    

    void Update ()
    {

        //کد حرکت
        if (transform .localScale .x > 0)
        {
        GetComponent <Rigidbody2D> ().velocity = new Vector2 (spead,GetComponent<Rigidbody2D>().velocity.y);
        }
        if (transform .localScale .x < 0)
        {
            GetComponent <Rigidbody2D> ().velocity = new Vector2 (-spead,GetComponent<Rigidbody2D>().velocity.y);
        }

            //کد انیمیشن حرکت
        anim.SetFloat ("spead",Mathf.Abs (GetComponent <Rigidbody2D>().velocity.x ));
    }

}
کد گیم آبجکت جلوییش
کد:
using UnityEngine;
using System.Collections;

public class ForwardSoldier : MonoBehaviour {
    private MovePlayer player;
    private HealthManager health;
    private Enemy enemy;
    public int healthtake = 1;

    void Start ()
    {
        
        health = FindObjectOfType <HealthManager>();
        player = FindObjectOfType <MovePlayer>();
        enemy = FindObjectOfType <Enemy>();
    }

    

    void Update ()
    {
    
    }

    void OnTriggerEnter2D (Collider2D other)
    {
        
        if (other.name == "Player")
        {
            
            enemy .spead = 0;
            
            enemy .anim.SetBool ("Attack",true );

        
            player .anim .SetBool ("DeadSword",true );
            
            player .spead = 0 ;
            
            health .Takehealth (healthtake);
            

        }
        
        if (other.tag == "PlayerBlad" )
        {
            enemy.spead = 0;
            enemy. anim.SetBool("DeadForward",true);
            Destroy (gameObject );
            
        }

    }

}

کد گیم آبجکت عقبی

کد:
using System.Collections;

public class BackSoldier : MonoBehaviour {
    
    private Enemy enemy;
    private MovePlayer player;
    public GameObject AttackDistroy;
    
    
    void Start ()
    {

        enemy = FindObjectOfType <Enemy>();

        player = FindObjectOfType <MovePlayer >();
    }
    
    
    void Update ()
    {
        
    }

    void OnTriggerEnter2D(Collider2D other)
    {
        
        if (other.tag == "PlayerAttack" )
        {
            
            DestroyObject (AttackDistroy);
            
            player .anim .SetBool ("Attack",true );
            
            enemy.spead = 0;
            
            enemy. anim.SetBool("DeadBack",true);


        }
        
        if (other.tag == "PlayerBlad" )
        {
            enemy.spead = 0;
            enemy. anim.SetBool("DeadBack",true);
            DestroyObject (AttackDistroy);

        }

    }




}

اینارو همه با آزمون و خطا نوشتم حالا نمیدونم چه ایرادی دارن که اون مشکل رو ایجاد میکنن
شاید نه امروز... نه فردا... و نه روز دیگر... اما سرانجام همه چیز درست خواهد شد

بازی ها و نمونه کارهای من:


بازی قلب پرنده
پاسخ
#25
دشمن اولی رو Duplicate کردی ؟
پاسخ
#26
از هردو راهش عمل کردم هم داپلیکیتش کردم اونجوری شد هم ازش پریفب ساختم باز اونجوری شد
شاید نه امروز... نه فردا... و نه روز دیگر... اما سرانجام همه چیز درست خواهد شد

بازی ها و نمونه کارهای من:


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

به نظر من بزن کد ها رو پاک کن بعد یه پریفب از ابجکت بساز به ابجکت های مورد نظر کد وصل کن بشین به صورت اصولی کد بنویس .

خیلی از چیزا رو هم میتونی به روش خیلی بهتر کدنویسی کنی . الان همین کد هات تو خیلی از سیستم ها مطمئنم 100 درصد ارور میده .
پاسخ
#28
(16/6/1394، 03:13 عصر)Black Flag نوشته است: خب شما از اول اشتباه رفتی . چون من الان بعد چند ساعت خودم یه چیز مشابه نوشتم کاملا کار میکنه .

به نظر من بزن کد ها رو پاک کن بعد یه پریفب از ابجکت بساز به ابجکت های مورد نظر کد وصل کن بشین به صورت اصولی کد بنویس .

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

این کدهارم فکر کنم در جریان باشید که چندروز مدام کار کردم تا خطاهای اولیش رفع شه

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

بازی ها و نمونه کارهای من:


بازی قلب پرنده
پاسخ
#29
به جای اینکه anim.GetComponent <Animator >(); رو بکار ببری سعی کن متغیر anim رو به صورت public از نوع Animator تعریف کنی تا توی inspector بتونی از ورودی بگیریش
خوب این تا اینجاteeth

بعدش کجا رو مشکل داری؟
پاسخ
 سپاس شده توسط aliheadari
#30
(16/6/1394، 05:05 عصر)sajjad3011 نوشته است: به جای اینکه anim.GetComponent <Animator >(); رو بکار ببری سعی کن متغیر anim رو به صورت public از نوع Animator تعریف کنی تا توی inspector بتونی از ورودی بگیریش
خوب این تا اینجاteeth

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

الان مشکل من همونیه که گفتم
شاید نه امروز... نه فردا... و نه روز دیگر... اما سرانجام همه چیز درست خواهد شد

بازی ها و نمونه کارهای من:


بازی قلب پرنده
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Information برخورد در یونیتی A.m 4 468 5/4/1397، 11:20 عصر
آخرین ارسال: aminblog76
  زمان برخورد کردن یک جسم به جسمی دیگر fahimi 1 296 29/4/1396، 02:25 عصر
آخرین ارسال: mamali me
Question مشکل در ساخت دشمن tmnttnmt 3 764 23/3/1395، 09:27 صبح
آخرین ارسال: Sinakhda
  فرو رفتن پلیر داخل کوه ها و ... AMIN9213 4 1,030 12/2/1395، 07:29 عصر
آخرین ارسال: AMIN9213
  مشکل در سرعت پلیر Ali-reza8448v2 4 1,123 10/9/1394، 05:24 عصر
آخرین ارسال: Ali-reza8448v2



کاربرانِ درحال بازدید از این موضوع: 1 مهمان