4 طرفہ اسپرائٹ کردار کے لئے چلنے کی حرکت پذیری کو نافذ کریں

جب صفحے کی تازہ کاری :
صفحہ تخلیق تاریخ :

تصدیق کا ماحول

Windows
  • ونڈوز 11
یونٹی ایڈیٹر
  • 2020.3.25f1
Input System Packages
  • 1.2.0

اس ٹوٹکے کے لئے ضروری شرائط

مندرجہ ذیل ترتیبات ان تجاویز کی وضاحت کے لئے ایک شرط کے طور پر پہلے سے تشکیل دی گئی ہیں.

حوالہ سائٹ

چلنے والے گرافکس کی تیاری

سب سے پہلے ، چلنے کی حرکت پذیری متعدد تصاویر کے درمیان مسلسل سوئچ کرکے حاصل کی جاتی ہے تاکہ ایسا لگے کہ آپ چل رہے ہیں۔ لہذا ، نقل و حرکت اور چلنے کی سمت دکھانے کے لئے زیادہ سے زیادہ تصاویر تیار کرنا ضروری ہے۔

سب سے آسان چلنے کی حرکت پذیری حاصل کرنے کے لئے، مندرجہ ذیل تصویر تیار کرنا عام ہے. یہ پیٹرن بہت سے آر پی جی میں بھی استعمال ہوتا ہے۔

سب سے پہلے ، یہ اوپر اور نیچے چار لائنوں میں تقسیم ہے ، لیکن یہ دکھاتا ہے کہ جب آپ چلتے ہیں تو آپ کو کس سمت کا سامنا کرنا پڑے گا۔ اوپر سے ، یہ "نیچے ، بائیں ، دائیں ، اوپر " ہے۔

اور بائیں اور دائیں کے لئے، یہ اس سمت میں چلنے کی حرکت ہوگی. عام بہاؤ "درمیان، بائیں، وسط، دائیں، وسط..." ہے.

اس بار تیار کردہ کردار کے ایک سیل کا سائز 32x32px ہے۔ چونکہ یہ 3x4 مربعوں کے لئے تیار کیا گیا ہے ، لہذا امیج فائل کا اصل سائز 96x128px ہے۔ ویسے، ایک حروف کے سائز کی کوئی حد نہیں ہے، لہذا 32x48px یا 64x64px بھی ممکن ہے.

* اس بار تیار کی گئی تصویر ایومارو کن ہے، جو میں نے بہت پہلے بنائی تھی۔ آپ اسے رویے کی تصدیق کے طور پر استعمال کرسکتے ہیں۔

ایک پروجیکٹ بنائیں اور تصاویر تیار کریں

اس بار ہم جو نمونہ بنائیں گے اس میں ، ہم فرض کریں گے کہ آپ ایک کردار رکھ سکتے ہیں اور اسے کی بورڈ پر کرسر چابیوں کے ساتھ منتقل کرسکتے ہیں۔

پہلا قدم ایک نیا 2 ڈی پروجیکٹ بنانا ہے. اپنے پروجیکٹ کے لئے تیار کردہ کردار کی تصویر شامل کریں۔

وہ تصویر منتخب کریں جو آپ نے ابھی شامل کی ہے اور انسپکٹر میں درج ذیل ترتیبات تشکیل دیں:

آئٹم کے نام کی قدر کے تبصرے
بناوٹ کی قسم Sprite
Sprite Mode جمع
پکسلز کی تعداد فی یونٹ 32 منظر میں رکھے جانے پر سائز کو متاثر کرتا ہے
میش کی قسم مکمل مستطیل
Filter Mode نقطہ اگر ضروری ہو
سکڑاؤ بغیر اگر ضروری ہو

ترتیب دینے کے بعد ، نیچے "لاگو کریں" بٹن پر کلک کریں۔

اگلا ، تصویر کو تقسیم کریں تاکہ آپ ان کے درمیان یونٹی میں سوئچ کرسکیں۔ انسپکٹر میں ایک "اسپرائٹ ایڈیٹر" بٹن ہے ، لہذا اس پر کلک کریں۔

جب اسپرائٹ ایڈیٹر ڈائیلاگ ظاہر ہوتا ہے تو ، "سلائس" ڈراپ ڈاؤن پر کلک کریں ، "ٹائپ" کو "گرڈ بائی سیل سائز" پر سیٹ کریں ، 32 کا پکسل سائز درج کریں (آپ کے کردار کے سائز پر منحصر ہے) اور سلائس بٹن پر کلک کریں۔

پھر ، تصویر کو مخصوص سائز سے تقسیم کیا جائے گا۔ اگر یہ الجھن کا شکار ہے تو ، تقسیم لائن دیکھنے کے لئے سی ٹی آر ایل کلید دبائیں۔

تقسیم کرنے کے بعد ، اسے بند کرنے کے لئے "لاگو کریں" بٹن پر کلک کریں۔

اگر آپ پروجیکٹ میں تصویری فائل کو وسعت دینے کے لئے اس کے دائرے دائیں بٹن پر کلک کرتے ہیں تو ، آپ دیکھ سکتے ہیں کہ تصویر تقسیم ہے۔

حرکت پذیری کا ڈیٹا بنانا

پچھلے سیکشن میں بنائی گئی تصویر کو ویو میں چھوڑ دیں۔

پھر ، تصویر شامل کرنے کے بجائے ، ایک محفوظ ڈائیلاگ دکھایا جائے گا۔ یہ حرکت پذیری کی ترتیبات کو محفوظ کرے گا ، لہذا فی الحال ، اسے "< امیج کا نام >اینیمیشن ڈاٹ اینیم" کے طور پر محفوظ کریں۔

اس سے پروجیکٹ میں دو فائلیں بنیں گی ، جس میں منظر میں تقسیم شدہ تصویر اور منظر میں بعد کی تصویر ہوگی۔

ویسے، اگر آپ اس حالت میں کھیل چلاتے ہیں، تو مجھے لگتا ہے کہ کردار خود بخود متحرک ہوجائے گا. یہ ایک ایسی حالت ہے جس میں 12 تصاویر کو کسی بھی وقت تبدیل اور ظاہر کیا جاتا ہے۔

اگر کھیل چل رہا ہے تو ، اسے چھوڑ دیں اور اینیمیشن ٹیب منتخب کریں۔ اگر نہیں تو ، مینو سے "ونڈو - > اینیمیشن - > اینیمیشن" منتخب کریں۔

آپ نے اس آبجیکٹ کا انتخاب کیا ہے جو آپ نے درجہ بندی سے بنایا ہے (اس معاملے میں ، Iwamaru_0)۔

پہلے سے ہی خود کار طریقے سے تیار کردہ حرکت پذیری موجود ہے ، لیکن مجھے اس کی ضرورت نہیں ہے ، لہذا میں اسے بعد میں حذف کروں گا۔ ایک ڈراپ ڈاؤن ہے جسے "آئیومارو اینیمیشن" کہا جاتا ہے جسے میں نے اس بار کا نام دیا ہے ، لہذا اس پر کلک کریں اور "نیا کلپ بنائیں" منتخب کریں۔

پھر محفوظ کریں ڈائیلاگ ظاہر ہوگا۔ چونکہ ہم ڈاؤن موومنٹ کی ایک اینیمیشن بنائیں گے ، لہذا ہم اسے "آئیومارو ڈاؤن" کے طور پر چھوڑ دیں گے۔

درجہ بندی سے "Iwamaru_0" منتخب کریں اور حرکت پذیری کو "آئیومارو ڈاؤن" میں تبدیل کریں۔

اس بار ، ہم حرکت پذیری کو "بائیں ، وسط ، دائیں ، درمیانے " میں دہرائیں گے ، لہذا ہم نمونوں کی تعداد 4 مقرر کریں گے۔ پھر دائیں طرف کی ٹائم لائن کو 4 حصوں میں تقسیم کیا جائے گا.

Iwamaru_0 ، پروجیکٹ کے اوپری بائیں کونے میں تصویر ، اینیمیشن ٹائم لائن میں 0.0 پر چھوڑ دیں۔

اگلا ، اوپر کی درمیانی تصویر میں "Iwamaru_1" کو 0.1 اور 0.3 پر چھوڑ دیں۔

آخر میں ، اوپری دائیں تصویر میں "Iwamaru_2" کو 0.2 پر چھوڑ دیں۔

کام مکمل ہونے کے بعد ، پلے بٹن پر کلک کریں۔ آپ دیکھ سکتے ہیں کہ منظر میں کردار چل رہا ہے اور اینیمیٹنگ کر رہا ہے۔ (اس نمونے کی تصویر کو سمجھنا تھوڑا مشکل ہے، لیکن ...)

بائیں ، دائیں ، اور اوپری حرکت پذیری بنانے کے لئے ایک ہی اقدامات پر عمل کریں۔

حرکت پذیری فائل کا نام ترتیب دینے والی تصویر
IwamaruDown Iwamaru_0، Iwamaru_1، Iwamaru_2، Iwamaru_1
IwamaruLeft Iwamaru_3، Iwamaru_4، Iwamaru_5، Iwamaru_4
IwamaruRight Iwamaru_6، Iwamaru_7، Iwamaru_8، Iwamaru_7
IwamaruUp Iwamaru_9، Iwamaru_10، Iwamaru_11، Iwamaru_10

اختتامی نتیجہ نیچے دی گئی تصویر سے ملتا جلتا نظر آنا چاہئے۔

اس بات کو یقینی بنائیں کہ ہر سمت صحیح طریقے سے متحرک ہے.

حرکت پذیری منتقلی کی ترتیبات

اگلا ، اسے کھولنے کے لئے پروجیکٹ سے "Iwamaru_0.کنٹرولر" پر ڈبل کلک کریں۔

اس کے بعد اینیمیٹر ٹیب کھل جائے گا اور آپ کو تصویر میں دکھائی گئی اسکرین کی طرح اسکرین نظر آئے گی۔ اس کی وجہ یہ ہے کہ آپ نے ابھی جو حرکت پذیری بنائی ہے وہ ہے "۔ کنٹرولر " فائل.

خالی جگہ پر دائیں کلک کریں اور نئے دوست کے درخت سے ریاست > بنائیں منتخب کریں۔

ایک نیا "بلینڈ ٹری" بنایا جائے گا ، اس پر دائیں کلک کریں اور "لیئر بطور ڈیفالٹ اسٹیٹ سیٹ کریں" منتخب کریں۔

اس کے بعد انٹری بلینڈ ٹری کو دیکھے گی۔ اس کا مطلب یہ ہے کہ جب حرکت پذیری حرکت کرتی ہے تو ، بلینڈ ٹری حرکت کرنے والی پہلی چیز ہوگی۔

ہم بلینڈ ٹری میں اینیمیشن ترتیب دینے جا رہے ہیں ، لہذا ہم تمام موجودہ حرکت پذیری کو حذف کردیں گے۔

بائیں طرف ایک "پیرامیٹرز" ٹیب ہے ، لہذا اسے منتخب کریں اور + بٹن سے "فلوٹ" شامل کریں۔

چونکہ دو پیرامیٹرز ہیں ، لہذا انہیں بالترتیب "ایکس" اور "وائی" کا نام دیا گیا ہے۔

بلینڈ ٹری پر ڈبل کلک کریں۔

ظاہر ہونے والا مرکب درخت منتخب کریں۔

انسپکٹر سے ، مرکب کی قسم کو 2 ڈی سادہ ڈکشنل میں تبدیل کریں۔

پیرامیٹرز کو "ایکس" اور "وائی" پر سیٹ کریں۔

موشن میں + بٹن سے ، موشن فیلڈ شامل کریں کو 4 بار منتخب کریں۔

ابتدائی قیمت مختلف ہوسکتی ہے ، لیکن یہ اعداد و شمار کی طرح نظر آنا چاہئے۔

چار موشن آئٹمز کے لئے جو ہم نے شامل کیے ہیں ، ہم پروجیکٹ میں اوپر ، نیچے ، بائیں ، اور دائیں ۔

پھر ، وضاحت کریں کہ ہر حرکت پذیری کو کس سمت میں جانا چاہئے۔

سمت XY
نیچے 0 -1
چوٹی 0 1
بائیں -1 0
دائیں 1 0

یہ حرکت پذیری سیٹ اپ کو مکمل کرتا ہے۔

آخر میں ، آپ خود بخود تیار کردہ حرکت پذیری فائل کو حذف کرسکتے ہیں کیونکہ آپ کو اس کی ضرورت نہیں ہے۔

نقل و حرکت پر کنٹرول

کی بورڈ پر ایک کلید دبا کر حرکت کی جاتی ہے ، لہذا آپ اسے کنٹرول کرنے کے لئے اسکرپٹ تشکیل دے سکتے ہیں۔ اس بار اسکرپٹ کو کردار کے ساتھ منسلک کیا جائے گا، لہذا ہم اسے "کریکٹر مو" کے نام سے چھوڑ دیں گے۔

اسکرپٹ اس طرح نظر آتا ہے:

using UnityEngine;
using UnityEngine.InputSystem;

public class CharacterMove : MonoBehaviour
{
  // あらかじめ Animator コンポーネントを持っておくようにする
  private Animator _animator;

  // 最初のフレーム更新の前に開始が呼び出されます
  void Start()
  {
    // オブジェクトに紐付いている Animator を取得する
    _animator = GetComponent<Animator>();

    // 最初の向き (下) を設定する
    _animator.SetFloat("X", 0);
    _animator.SetFloat("Y", -1);
  }

  /// <summary>一定時間ごとに呼ばれるメソッドです。</summary>
  void FixedUpdate()
  {
    // キーボードの入力方向を取得
    var move = GetMove();

    if (move != Vector2.zero)
    {
      // 入力されている場合はアニメーターに方向を設定
      _animator.SetFloat("X", move.x);
      _animator.SetFloat("Y", move.y);

      // 入力した方向に移動
      transform.Translate(move * 0.2f);
    }
  }

  /// <summary>キーボード入力による移動方向を取得します。</summary>
  /// <returns>キーボード入力による移動方向。</returns>
  private Vector2 GetMove()
  {
    Vector2 move = Vector2.zero;
    if (Keyboard.current.upArrowKey.isPressed)
    {
      move += new Vector2(0, 1);
    }
    if (Keyboard.current.downArrowKey.isPressed)
    {
      move += new Vector2(0, -1);
    }
    if (Keyboard.current.leftArrowKey.isPressed)
    {
      move += new Vector2(-1, 0);
    }
    if (Keyboard.current.rightArrowKey.isPressed)
    {
      move += new Vector2(1, 0);
    }

    // 入力した値がある場合は正規化して返す
    return move == Vector2.zero ? move : move.normalized;
  }
}

مندرجہ ذیل ہر حصے کی وضاحت ہے.

// あらかじめ Animator コンポーネントを持っておくようにする
private Animator _animator;

// 最初のフレーム更新の前に開始が呼び出されます
void Start()
{
  // オブジェクトに紐付いている Animator を取得する
  _animator = GetComponent<Animator>();

  // 最初の向き (下) を設定する
  _animator.SetFloat("X", 0);
  _animator.SetFloat("Y", -1);
}

Start سب سے پہلے، طریقہ کار میں جزو حاصل کریںAnimator. Update یہ استعمال کیا جائے گا ، لہذا اسے پیشگی حاصل کریں۔

Animator.SetFloat طریقہ کار مخصوص پیرامیٹر نام کے لئے ایک قدر مقرر کرسکتا ہے۔ حرکت پذیری کی ترتیبات میں ، ہم طے کرتے ہیں کہ ایکس اور وائی اقدار کے مطابق کون سی حرکت پذیری کا استعمال کرنا ہے۔ اگر آپ ایکس اور وائی پیرامیٹرز کی سمت مقرر کرتے ہیں تو ، حرکت پذیری کو اسی سمت میں انجام دیا جائے گا۔ ابتدائی حالت میں ، ہم نیچے آنا چاہتے ہیں ، لہذا ہم وضاحت کرتے ہیں (ایکس: 0 ، وائی: -1)۔ ویسے ، نوٹ کریں کہ پیرامیٹر کے نام کیس حساس ہیں۔

/// <summary>一定時間ごとに呼ばれるメソッドです。</summary>
void FixedUpdate()
{
  // キーボードの入力方向を取得
  var move = GetMove();

  if (move != Vector2.zero)
  {
    // 入力されている場合はアニメーターに方向を設定
    _animator.SetFloat("X", move.x);
    _animator.SetFloat("Y", move.y);

    // 入力した方向に移動
    transform.Translate(move * 0.2f);
  }
}

FixedUpdate طریقہ کار میں ، ہم وقتا فوقتا کی بورڈ کی ان پٹ حیثیت کی جانچ پڑتال کرتے ہیں اور جب ان پٹ ہوتا ہے تو اس پر عمل کرتے ہیں۔

GetMove یہ طریقہ کی بورڈ ان پٹ کے طور پر سمتوں کو واپس کرنے کے لئے ڈیزائن کیا گیا ہے۔ پروسیسنگ مواد کی بورڈ ان پٹ ٹپس میں بیان کردہ چیز پر مبنی ہے ، لہذا میں اسے چھوڑ دوں گا۔

جب کی بورڈ ان پٹ ہو تو ، Animator.SetFloat طریقہ کار کی سمت مقرر کریں۔ یہ آپ کو جس سمت میں منتقل کیا گیا ہے اس میں حرکت پذیری کو قابل بناتا ہے۔ transform.Translate اس کے بعد ، ہم طریقہ کار کے ساتھ آبجیکٹ کو حرکت دے رہے ہیں۔

ایک بار جب آپ اسکرپٹ تخلیق کر لیتے ہیں تو ، اسے کردار آبجیکٹ سے منسلک کریں۔

نفاذ

یہ پورے عمل کو مکمل کرتا ہے. گیم کو چلانے کی کوشش کریں اور اسے منتقل کرنے کے لئے اپنے کی بورڈ پر کرسر چابیاں دبائیں۔ اگر کردار اس سمت میں چلتا ہے جس سمت میں آپ نے اسے دبایا ہے ، اور چلنے والی حرکت پذیری حرکت کرتی ہے جبکہ گرافک اس سمت میں سمت تبدیل کرتا ہے جس کا آپ سامنا کر رہے ہیں تو ، آپ مکمل ہوجاتے ہیں۔