কোকোস 2 ডি-তে, আমি কীভাবে একটি স্বেচ্ছাসেবী ব্যবহারকারী-আঁকানো আকারের বিরুদ্ধে সংঘর্ষের জন্য চেক করব?


10

আমি কোনও স্প্রিট এবং কোনও ধরণের ব্যবহারকারীর দ্বারা উত্পাদিত আকারের মধ্যে সংঘর্ষ সনাক্ত করতে চাই।

উদাহরণ স্বরূপ. স্ক্রিনে 3 টি অবজেক্ট রয়েছে। ব্যবহারকারী তাদের আঙুলটি নেয় এবং 2 টি অবজেক্টের কাছাকাছি অস্বাভাবিক আকার দেয় shape আমাকে সেই 2 টি জিনিস সনাক্ত করতে হবে।

বেগুনি রঙের মধ্যে ব্যবহারকারী আকার, সবুজ এবং লাল রঙের খেলাগুলি

আমি কীভাবে কোকোএস 2 ডি ব্যবহার করে দক্ষতার সাথে এটি ব্যবহার করব?

উত্তর:


10

সেই নির্দিষ্ট উদাহরণের জন্য খুব সহজ সমাধান রয়েছে।

আমি ধরে নিচ্ছি আপনার যথেচ্ছ আকৃতিটি কেবল পয়েন্টের একটি সিরিজ।

আপনার প্রতিটি বস্তু থেকে যে কোনও দিক থেকে একটি আঁকুন। যদি এটি আপনার আকারের একটি রেখাংশ ছেদ করে এমন সংখ্যার সমান হয় (শূন্য সহ), আপনি আকৃতির বাইরে।

যদি আপনি ছেদ করেছেন এমন সংখ্যাটি বিজোড় হয় তবে আপনি বস্তুর অভ্যন্তরে।

রে / লাইন বিভাগের সংঘর্ষ অনুসন্ধান / বাস্তবায়ন করার জন্য একটি সহজ সহজ অ্যালগরিদম।


3

অবশ্যই, আমার গেম স্টার ক্যাচের জন্য আমাকে এটি খুঁজে বের করতে হয়েছিল। এটি করার আরও ভাল উপায় থাকতে পারে তবে আমি এটি এটি করেছিলাম। আমি আসলে অনলাইনে অ্যালগরিদমটি খুঁজে পেয়েছি (দুঃখিত আমি উত্সটি মনে করতে পারি না) বহুভুজের ভিতরে একটি বিন্দু সনাক্ত করার জন্য আমি অনুসন্ধান করেছি।

আমি আমার বক্তব্য ধরে রাখতে একটি এনএসমিটেবলআরে তৈরি করেছি। আমি আমার স্পর্শকাতরগুলিতে পয়েন্টগুলি যুক্ত করি।

- (BOOL) testNodeInLoop:(CCNode *)node {

    CGPoint prev;

    // This is more accurate point for the node
    CGPoint absPoint = [node convertToWorldSpace:CGPointZero];

    float x = absPoint.x;
    float y = absPoint.y;

    BOOL isIn = NO;

    CGPoint cp;

    for(int i = 0, j = [points count] - 1; i < [points count]; j = i++) {
        [[points objectAtIndex:i] getValue:&cp];
        [[points objectAtIndex:j] getValue:&prev];

        if( ((cp.y > y) != (prev.y > y)) && (x < (prev.x -cp.x) * (y - cp.y) / (prev.y - cp.y) + cp.x)) {
            isIn = !isIn;
        }
    }
    return isIn;
}

এটি সহায়ক হলে আমাকে জানান know


2

"রিয়েল টাইম সংঘর্ষ সনাক্তকরণ" বইটিতে লাইন / বিভাগের সংঘর্ষ সনাক্তকরণ সম্পর্কে একটি বিভাগ রয়েছে। গুগল বইয়ের মাধ্যমে উদাহরণ: http://ow.ly/2gjQf


0

পিক্সেলওয়াই সংঘর্ষের চেকগুলির জন্য এক্সএনএ বিকাশকারী সাইটে একটি দুর্দান্ত টিউটোরিয়াল সিরিজ রয়েছে।
http://creators.xna.com/en-US/tutorial/collision2dperpixeltransused

আপনি যে অপ্টিমাইজেশন ব্যবহার করতে পারেন যা সেই টিউটোরিয়ালগুলিতে ব্যবহৃত হয়নি (অদ্ভুতভাবে যথেষ্ট) যে বেশিরভাগ ক্ষেত্রে কেবল মূল্যবান চক্র সংরক্ষণ করে কেবল রূপরেখাটি পরীক্ষা করা দরকার ।

যোগ করার জন্য সম্পাদিত: লসির উত্তর, প্রশ্নটি ভুল করে লিখুন। আপনি যদি প্রতি পিক্সেল কোল্ডে পড়তে চান তবে টিউটোরিয়ালগুলি এখনও বেশ শালীন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.