امتیاز موضوع:
  • 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();

کد:
}

کد:
}
[color][size][font][ltr][size][size][font]
 
 
 
 
[/font][/size][/size][/ltr][/font][/size][/color]
کد:
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 مهمان