آموزش ساخت خشاب اسلحه ( آپگرید اسلحه ) Unreal Script - نسخهی قابل چاپ +- انجمن های تخصصی فلش خور (http://www.flashkhor.com/forum) +-- انجمن: نرم افزار های ساخت بازی (http://www.flashkhor.com/forum/forumdisplay.php?fid=13) +--- انجمن: ساخت، ویرایش و -- بازی ها (http://www.flashkhor.com/forum/forumdisplay.php?fid=9) +---- انجمن: UDK (http://www.flashkhor.com/forum/forumdisplay.php?fid=16) +---- موضوع: آموزش ساخت خشاب اسلحه ( آپگرید اسلحه ) Unreal Script (/showthread.php?tid=264482) |
آموزش ساخت خشاب اسلحه ( آپگرید اسلحه ) Unreal Script - امیرحسین - 02-03-2017 سلام دوستان در این اموزش میخایم یه خشاب اضافه کنیم که با برخورد پلایر ( Pawn ) با اون خشاب اسلحه یا همون تیرها پر بشه . دقیقا" مثل اکثر بازیهای تیر اندازی که بعضی جاها خشاب هست . مراحل کلی : مرحله اول : اضافه کردن کد اضافه کردن تیر به کلاس اصلی اسلحه مرحله دوم : ساخت یک اکتور که با برخورد با اون فانکشن مربوط به افزایش تیر فراخانی بشه ============= خوب اول باید تصیمی بگیریم این خشاب رو برای کدوم اسلحه بسازیم در اینجا من ShochRifle رو انتخاب کردم ابتدا باید یه فانکشن بنویسیم تا خشاب رو پر کنه . برای این کار چون میخایم برای ShochRifle خشاب بنویسیم اسمشو سرچ میکنیم تا کلاسهای مربوط به اونو پیدا کنیم با سرچ کلمه ShochRifle در مسیر Development\Src با چند تا کلاس مواجه میشیم . ما باید این فانکشن رو در کلاس اصلی اصلحه که مستقیما" از UTWeapon مشتق گرفته شده بنویسیم پس میریم سراغ کلاس UTWeap_ShockRifleBase این کلاس رو باز کنید . همونطور که گفتم میبینید که از UTWeapon مشتق گرفته شده . این کدها رو بهش اضافه میکنیم : 1
2 3 4 5 کد: function UpgradeWeapon() کد: { کد: AddAmmo(MaxAmmoCount); کد: } توضیحات : AddAmmo یه فانکشن هست در کلاس UTWeapon که میتونیم با استفاده ازش هر تعداد مهمات نیاز داشتیم اضافه کنیم MaxAmmoCount یک متغیر که در کلاس UTWeapon هست که اطلاعات مربوط به حده اکثر تیر مجاز برای اسلحه در اون ذخیره میشه در کل با استفاده از این : 1
2 کد: AddAmmo(MaxAmmoCount); میگیم حده اکثر تیر مجاز برای اسلحه فعلی رو اضافه کن مرحله اول تموم شد خوب حالا ما باید یه کلاس خودمون بنویسیم که یک اکتور باشه که با برخورد کرکتر با اون در صورتی که همین اسلحه دستش باشه تیر رو اضافه کنه و خودش حذف بشه برای این کار این کدها رو باید بنویسید : 1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 کد: class کد: WeaponUpgrade extends Actor کد: placeable; [ltr] [/ltr] کد: event Touch(Actor Other, PrimitiveComponent OtherComp, vector HitLocation, vector HitNormal) کد: { کد: if کد: (Pawn(Other) != none && UTWeap_ShockRifleBase(Pawn(Other).Weapon) != none) کد: { کد: UTWeap_ShockRifleBase(Pawn(Other).Weapon).UpgradeWeapon(); کد: Destroy(); کد: } کد: } [ltr] [/ltr] کد: defaultproperties کد: { کد: bCollideActors=True کد: Begin Object Class=DynamicLightEnvironmentComponent Name=MyLightEnvironment کد: bEnabled=TRUE کد: End Object کد: Components.Add(MyLightEnvironment) کد: Begin Object Class=StaticMeshComponent Name=PickupMesh کد: StaticMesh=StaticMesh کد: 'UN_SimpleMeshes.TexPropCube_ Dup' کد: Materials(0)=Material کد: 'EditorMaterials.WidgetMateri al_Y' کد: LightEnvironment=MyLightEnvironment کد: Scale3D=(X=0.125,Y=0.125,Z=0.125) کد: End Object کد: Components.Add(PickupMesh) کد: Begin Object Class=CylinderComponent Name=CollisionCylinder کد: CollisionRadius=16.0 کد: CollisionHeight=16.0 کد: BlockNonZeroExtent= کد: true کد: BlockZeroExtent= کد: true کد: BlockActors= کد: true کد: CollideActors= کد: true کد: End Object کد: CollisionComponent=CollisionCylinder کد: Components.Add(CollisionCylinder) کد: } توضیحات : 1
2 کد: if کد: (Pawn(Other) != none && UTWeap_ShockRifleBase(Pawn(Other).Weapon) != none) دستور شرطی که میگه اگر پلایر وجود داشت و سلاح UTWeap_ShockRifle رو هم داشت فلان عملیات رو انجام بده 1
2 کد: UTWeap_ShockRifleBase(Pawn(Other).Weapon).UpgradeWeapon(); این کد میگه برو به کلاس UTWeap_ShockRifleBase و فانکشن UpgradeWeapon رو اجرا کن که باعث میشه محمات اضافه بشه Destroy(); اینم که خیلی ساده میگه اکتور حذف بشه خوب این کدها داخل ایونت Touch قرار داره چون میخایم وقتی برخورد بین کرکتر با این اکتور انجام شد کدهای داخلش اجرا بشه کدهای مربوط به بخش defaultproperties هم فکر نکنم نیازی به توضیح داشته باشه کدهایی هست که تقریبا" در هر اکتوری وجود داره و بدنه اصلی رو تشکیل میده مثل Colession یا تاثیر نورها بر اکتور یا مش اون و ... سوالی بود درخدمتم موفق باشین |