امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5

آموزش ساخت خشاب اسلحه ( آپگرید اسلحه ) Unreal Script

#1
سلام دوستان

در این اموزش میخایم یه خشاب اضافه کنیم که با برخورد پلایر ( 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 یا تاثیر نورها بر اکتور یا مش اون و ...





سوالی بود درخدمتم

موفق باشین
پاسخ
آگهی


[-]
به اشتراک گذاری/بوکمارک (نمایش همه)
google Facebook cloob Twitter
برای ارسال نظر وارد حساب کاربری خود شوید یا ثبت نام کنید
شما جهت ارسال نظر در مطلب نیازمند عضویت در این انجمن هستید
ایجاد حساب کاربری
ساخت یک حساب کاربری شخصی در انجمن ما. این کار بسیار آسان است!
یا
ورود
از قبل حساب کاربری دارید? از اینجا وارد شوید.


پرش به انجمن:


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