Adding a top-down strafe feature

Yesterday I was tasked to add a strafe feature in our current project, Bounce Ball. Bounce Ball, or “BB” for short, is a top-down 3D game with free rotation of the character. The team have kept an ongoing discussion of how the strafe should be implemented. We all agree on adding what we call rotational locks that snap the player to an appropriate angle but the question has been: how many rotations do we add?
Eight rotations feels like a minimum requirement but sixteen feels like to many! I’ve visualized these rotations in the picture below.
The left image shows the eight rotations while the right image shows the sixteen rotations. We feel like eight rotations will snap the character too much and affect game feel, while sixteen rotations will require too much precision. We decided to make it twelve rotations and play test it to get a feeling for it.
I started by adding a public array of integer values clamped by the range of 0-359, in the PlayerMovement class. This array is meant to store the specific angles that represents the rotational locks to snap to.
Now I had to create a method that runs once, each time the strafe button gets pressed (we use the left trigger), and snaps the character to the closest rotational lock. To do this I will need to iterate through the array and compare each value with the characters current rotational angle.
McClusky idle.
Stan McClusky – Made by Marcel Fontes @Marcel_E_Fontes.
This is how I wrote that method:

private void LockRotation() {
    // Get the current rotation of the characters Y-axis,
    // since that's the only relevant one.
    float currentRotation = p_Transform.eulerAngles.y;

    // Save the locked rotation closest to current.
    float closestRotation = 0f;

    // Start with the highest possible angle.
    float smallestDifference = 360f;

    // Iterate through the rotational locks-array.
    for(int i = 0; i < p_RotationLocks.Length; i++) {
        // Check the difference between this rotation lock
        // and the current rotation.
        float t = Mathf.Max(p_RotationLocks[i], currentRotation)
                - Mathf.Min(p_RotationLocks[i], currentRotation);

        // If the difference is smaller than the previous...
        if(t < smallestDifference) {
            smallestDifference = t; // set it as the smallest...
            // and save the rotation lock.
            closestRotation = p_RotationLocks[i];
        }
    }

    // Calculate the difference to adjust in the current rotation.
    float difference = closestRotation - currentRotation;

    // Rotate the player.
    p_Transform.eulerAngles = p_Transform.eulerAngles
                            + new Vector3(0f, difference, 0f);
}

If you have any thoughts, comments or questions don’t be afraid to post them below!

25 thoughts on “Adding a top-down strafe feature

  1. 1xbet бесплатная says:

    1xBet является очень известных на рынке. 1xbet бесплатная Огромный выбор спортивных и киберспортивных событий, десятки открытых линий, самые высокие коэффициенты. Также, БК имеет широкий функционал и одна из немногих дает возможность совершать ставки по специальным промокодам. Используя промокоды, вы можете получить настоящие деньги, не внося абсолютно никаких средств. Это реально! Узнать актуальный промокод вы можете сейчас же, однако использовать его необходимо в соответствии с правилами и инструкциями, которые приведены ниже.

  2. Billie2391 says:

    Мадонна, икона поп-музыки и культурного влияния, продолжает вдохновлять и поражать своей музыкой и стилем. Её карьера олицетворяет смелость, инновации и постоянное стремление к самовыражению. Среди её лучших песен можно выделить “Like a Prayer”, “Vogue”, “Material Girl”, “Into the Groove” и “Hung Up”. Эти треки не только доминировали на музыкальных чартах, но и оставили неизгладимый след в культурной и исторической панораме музыки. Мадонна не только певица, но и икона стиля, актриса и предприниматель, чье влияние простирается далеко за рамки музыкальной индустрии. Скачать mp3 музыку 2024 года и слушать онлайн бесплатно.

  3. الأنابيب الخرسانية المسلحة says:

    أنابيب الصلب الكربوني المستخدمة لنقل المياه عالية الحرارة هي أيضًا إحدى علامات الجودة في مصنع إيليت بايب. تم تصميم هذه الأنابيب لتحمل الظروف القاسية، مما يوفر أداءً موثوقًا في البيئات المتطلبة. بفضل سمعتنا في التميز في العراق، يمكنك الوثوق بأن أنابيب الصلب الكربوني لدينا مصنوعة وفقًا لأعلى المعايير. تعرف على المزيد عبر elitepipeiraq.com.

  4. truck scale price in Iraq says:

    شركة Bwer هي أحد الموردين الرئيسيين لموازين الشاحنات ذات الجسور في العراق، حيث تقدم مجموعة كاملة من الحلول لقياس حمولة المركبات بدقة. وتغطي خدماتها كل جانب من جوانب موازين الشاحنات، من تركيب وصيانة موازين الشاحنات إلى المعايرة والإصلاح. تقدم شركة Bwer موازين شاحنات تجارية وموازين شاحنات صناعية وأنظمة موازين جسور محورية، مصممة لتلبية متطلبات التطبيقات الثقيلة. تتضمن موازين الشاحنات الإلكترونية وموازين الشاحنات الرقمية من شركة Bwer تقنية متقدمة، مما يضمن قياسات دقيقة وموثوقة. تم تصميم موازين الشاحنات الثقيلة الخاصة بهم للبيئات الوعرة، مما يجعلها مناسبة للصناعات مثل الخدمات اللوجستية والزراعة والبناء. سواء كنت تبحث عن موازين شاحنات للبيع أو الإيجار أو التأجير، توفر شركة Bwer خيارات مرنة لتناسب احتياجاتك، بما في ذلك أجزاء موازين الشاحنات والملحقات والبرامج لتحسين الأداء. بصفتها شركة مصنعة موثوقة لموازين الشاحنات، تقدم شركة Bwer خدمات معايرة موازين الشاحنات المعتمدة، مما يضمن الامتثال لمعايير الصناعة. تشمل خدماتها فحص موازين الشاحنات والشهادات وخدمات الإصلاح، مما يدعم موثوقية أنظمة موازين الشاحنات الخاصة بك على المدى الطويل. بفضل فريق من الخبراء، تضمن شركة Bwer تركيب وصيانة موازين الشاحنات بسلاسة، مما يحافظ على سير عملياتك بسلاسة. لمزيد من المعلومات حول أسعار موازين الشاحنات، وتكاليف التركيب، أو لمعرفة المزيد عن مجموعة موازين الشاحنات ذات الجسور وغيرها من المنتجات، تفضل بزيارة موقع شركة Bwer على الإنترنت على bwerpipes.com

Comments