در این مطلب، ویدئو نحوه ایجاد یک بازی سه بعدی ماشین مسابقه ای در پایتون با موتور Ursina با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:16:48
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,880 –> 00:00:02,720
سلام به همگی به یکی دیگر از
2
00:00:02,720 –> 00:00:04,960
مجموعه های آموزشی پایتون خوش آمدید و در این ویدیو می
3
00:00:04,960 –> 00:00:06,640
خواهم در مورد
4
00:00:06,640 –> 00:00:09,519
ایجاد یک بازی کارتی مسابقه سه بعدی در پایتون
5
00:00:09,519 –> 00:00:11,360
با موتور سال صحبت کنم،
6
00:00:11,360 –> 00:00:13,200
بنابراین اول از همه بیایید ماژول های خود را وارد کنیم
7
00:00:13,200 –> 00:00:15,440
و یک پنجره با رنگ نارنجی
8
00:00:15,440 –> 00:00:16,560
9
00:00:16,560 –> 00:00:19,359
ایجاد کنیم. ستاره را وارد
10
00:00:19,359 –> 00:00:20,960
نکنیم و همچنین میخواهیم ماژول تصادفی را وارد
11
00:00:20,960 –> 00:00:22,720
12
00:00:22,720 –> 00:00:25,039
کنیم و میتوانیم برنامه اصلی خود را به این صورت راهاندازی کنیم
13
00:00:25,039 –> 00:00:27,439
14
00:00:27,439 –> 00:00:29,039
و در این بین میتوانم رنگ پنجره را
15
00:00:29,039 –> 00:00:32,880
برابر با نارنجی تنظیم کنم،
16
00:00:34,000 –> 00:00:36,880
بنابراین اگر اکنون این را ذخیره و اجرا کنم،
17
00:00:36,880 –> 00:00:41,120
اکنون یک پنجره نارنجی زیبا داریم.
18
00:00:41,920 –> 00:00:44,000
کاری که من می توانم انجام دهم این است که یک جاده ایجاد کنم و
19
00:00:44,000 –> 00:00:46,320
این جاده جایی است که
20
00:00:46,320 –> 00:00:48,239
ماشین قرار است در
21
00:00:48,239 –> 00:00:50,239
آن قرار گیرد، بنابراین یک موجودیت خواهد بود،
22
00:00:50,239 –> 00:00:53,840
همچنین مدل برابر با
23
00:00:53,840 –> 00:00:57,719
مکعب، رنگ برابر با سبز،
24
00:00:58,000 –> 00:01:01,039
همچنین مقیاس برابر با 10 در محور x
25
00:01:01,039 –> 00:01:05,840
0.5 در محور y و 60 در محور z
26
00:01:05,840 –> 00:01:08,560
میتوانم موقعیت را
27
00:01:08,560 –> 00:01:11,760
برابر با 0 0 0 قرار
28
00:01:11,760 –> 00:01:13,520
دهم و بافت را
29
00:01:13,520 –> 00:01:15,280
برابر
30
00:01:15,280 –> 00:01:19,360
با تصویری از پوشه داراییهایم road.png تنظیم میکنم،
31
00:01:19,360 –> 00:01:21,040
بنابراین اگر این را اجرا کنم
32
00:01:21,040 –> 00:01:22,560
متوجه خواهید شد که من
33
00:01:22,560 –> 00:01:24,400
هنوز چیزی را نمی بینم،
34
00:01:24,400 –> 00:01:26,720
بنابراین اگر آن را ببندم کاری که اکنون می خواهم انجام دهم این
35
00:01:26,720 –> 00:01:28,880
است به سادگی موقعیت و چرخش دوربین خود را تنظیم کنم تا بتوانم
36
00:01:28,880 –> 00:01:31,360
موقعیت
37
00:01:31,360 –> 00:01:33,920
dab دوربین
38
00:01:33,920 –> 00:01:35,920
را برابر با
39
00:01:35,920 –> 00:01:39,439
0 در x 8 در y منفی 26 در
40
00:01:39,439 –> 00:01:41,280
محور z
41
00:01:41,280 –> 00:01:44,079
تنظیم کنم و می توانم چرخش را برابر
42
00:01:44,079 –> 00:01:46,320
یا در واقع چرخش در محور x را برابر تنظیم کنم.
43
00:01:46,320 –> 00:01:48,560
به 20.
44
00:01:48,560 –> 00:01:51,360
بنابراین اکنون اگر این را ذخیره و اجرا
45
00:01:51,360 –> 00:01:53,360
کنم، متوجه خواهید شد که اکنون نمای کاملاً
46
00:01:53,360 –> 00:01:56,640
واضحی از اتاق دارم،
47
00:01:57,119 –> 00:01:58,719
بنابراین اکنون که این را دارم، کاری که میخواهم
48
00:01:58,719 –> 00:02:01,520
انجام دهم این است که در ماشین خود اضافه کنم
49
00:02:01,520 –> 00:02:03,680
تا یک موجودیت ماشین ایجاد کنم.
50
00:02:03,680 –> 00:02:06,240
آن را برابر با یک موجودیت قرار دهید
51
00:02:06,240 –> 00:02:08,479
همچنین والد برابر با
52
00:02:08,479 –> 00:02:10,399
53
00:02:10,399 –> 00:02:13,840
جاده، مدل را برابر با بافت مکعبی
54
00:02:13,840 –> 00:02:16,400
55
00:02:17,200 –> 00:02:18,959
برابر با
56
00:02:18,959 –> 00:02:23,840
تصویر پوشه داراییهای من ماشین نقطه png تنظیم کنید
57
00:02:24,400 –> 00:02:27,879
، آن را 0.17 x
58
00:02:27,879 –> 00:02:30,239
0.001 x از y
59
00:02:30,239 –> 00:02:34,160
و روی 0.06 در مجموعه z
60
00:02:34,560 –> 00:02:37,920
قرار میدهم. موقعیت برابر با
61
00:02:37,920 –> 00:02:40,560
منفی 0.07
62
00:02:40,560 –> 00:02:41,599
1
63
00:02:41,599 –> 00:02:43,440
و منفی 12
64
00:02:43,440 –> 00:02:46,560
یا منفی 0.12 است
65
00:02:46,560 –> 00:02:48,560
و من همچنین می خواهم یک برخورد دهنده جعبه ای را اضافه کنم
66
00:02:48,560 –> 00:02:52,160
زیرا می خواهیم این ماشین با هم برخورد کند،
67
00:02:52,160 –> 00:02:54,400
بنابراین اگر این را ذخیره کنم و اجرا کنم
68
00:02:54,400 –> 00:02:57,280
، می بینیم که ماشین من دقیقاً
69
00:02:57,280 –> 00:03:00,239
در همان نقطه است. در مرکز،
70
00:03:00,959 –> 00:03:05,440
بنابراین اکنون میتوانیم کاری کنیم که تصویر جاده
71
00:03:05,440 –> 00:03:07,519
آن را مانند یک جلوه چرخان نشان
72
00:03:07,519 –> 00:03:09,280
دهد که به ما این توهم را میدهد که c ar در
73
00:03:09,280 –> 00:03:10,720
حال حرکت رو به جلو است،
74
00:03:10,720 –> 00:03:12,080
اکنون می توانیم این کار را در یک تابع به روز رسانی
75
00:03:12,080 –> 00:03:14,080
با جابجایی تصویر جاده در
76
00:03:14,080 –> 00:03:17,680
جهت y با سرعت مشخصی
77
00:03:17,680 –> 00:03:20,000
انجام دهیم، بنابراین بیایید تابع به روز رسانی خود
78
00:03:20,000 –> 00:03:22,159
79
00:03:22,159 –> 00:03:24,560
80
00:03:24,560 –> 00:03:26,319
81
00:03:26,319 –> 00:03:28,000
را ایجاد کنیم.
82
00:03:28,000 –> 00:03:29,599
در اینجا،
83
00:03:29,599 –> 00:03:32,159
بنابراین من در ابتدا یک متغیر offset برابر با
84
00:03:32,159 –> 00:03:34,159
صفر
85
00:03:34,159 –> 00:03:36,239
دارم و یک متغیر run برابر با true خواهم داشت
86
00:03:36,239 –> 00:03:38,000
87
00:03:38,000 –> 00:03:39,440
، بنابراین این متغیر run میخواهد
88
00:03:39,440 –> 00:03:41,840
پیگیری کند که آیا
89
00:03:41,840 –> 00:03:43,519
بازی اجرا میشود یا نه، بنابراین اگر درست باشد، ما
90
00:03:43,519 –> 00:03:44,720
میخواهیم بازی اجرا شود
91
00:03:44,720 –> 00:03:46,640
و اگر نادرست باشد، نمیخواهیم
92
00:03:46,640 –> 00:03:48,400
بازی اجرا شود،
93
00:03:48,400 –> 00:03:49,840
بنابراین در این تابع بهروزرسانی، میخواهیم
94
00:03:49,840 –> 00:03:50,879
بررسی
95
00:03:50,879 –> 00:03:52,959
کنیم که اجرا درست است، بنابراین اگر
96
00:03:52,959 –> 00:03:54,239
میخواهیم بازی اجرا شود،
97
00:03:54,239 –> 00:03:55,680
میخواهیم اساساً
98
00:03:55,680 –> 00:03:57,280
همه چیز را در این عبارت if پنهان کنیم.
99
00:03:57,280 –> 00:03:58,400
اجرا کنید
100
00:03:58,400 –> 00:04:00,239
و اولین کار این است که افست را افزایش دهید
101
00:04:00,239 –> 00:04:01,599
102
00:04:01,599 –> 00:04:05,040
تا افست به اضافه تقسیم بر dt
103
00:04:05,040 –> 00:04:07,439
ضربدر 0.3
104
00:04:07,439 –> 00:04:09,840
و ما می توانیم ویژگی
105
00:04:09,840 –> 00:04:11,439
جاده را
106
00:04:11,439 –> 00:04:14,319
که بافت
107
00:04:14,319 –> 00:04:16,799
افست
108
00:04:17,759 –> 00:04:20,560
صفر و آفست را تنظیم کنیم،
109
00:04:20,560 –> 00:04:23,759
بنابراین اگر این را بگویم و
110
00:04:24,400 –> 00:04:26,400
اکنون اجرا کنم، به نظر می رسد که ماشین است.
111
00:04:26,400 –> 00:04:29,440
حرکت رو به جلو چون ما
112
00:04:29,440 –> 00:04:33,040
اساساً جاده را متحرک کردهایم،
113
00:04:34,320 –> 00:04:36,800
بنابراین اکنون کاری که میتوانیم انجام دهیم این است که حرکت ماشین را اضافه کنیم،
114
00:04:36,800 –> 00:04:38,960
بنابراین با فشار دادن کلیدهای d و a، ماشین را به چپ و راست حرکت دهیم
115
00:04:38,960 –> 00:04:41,120
116
00:04:41,120 –> 00:04:44,639
و برای انجام این کار، میخواهیم um را بررسی کنیم که
117
00:04:44,639 –> 00:04:47,520
آیا d یا یک کلید
118
00:04:47,520 –> 00:04:48,960
فشار داده می شود بنابراین اگر d
119
00:04:48,960 –> 00:04:50,720
he فشار داده شود، می خواهیم کارت ها در
120
00:04:50,720 –> 00:04:53,199
موقعیت x به سمت راست حرکت کنند،
121
00:04:53,199 –> 00:04:55,040
بنابراین قسمت x
122
00:04:55,040 –> 00:04:56,720
به اضافه برابر با کلیدهای نگه داشته شده
123
00:04:56,720 –> 00:04:58,720
124
00:04:58,720 –> 00:05:00,880
d
125
00:05:01,919 –> 00:05:04,080
ضرب در زمان در dt
126
00:05:04,080 –> 00:05:06,320
ضرب در 0.5 می شود
127
00:05:06,320 –> 00:05:08,479
و این همان چیزی است که با
128
00:05:08,479 –> 00:05:11,440
کلید فلش یا a نه کلید فلش
129
00:05:11,440 –> 00:05:12,479
کلید a
130
00:05:12,479 –> 00:05:14,800
به جز اینکه می خواهیم نمای کارت را کاهش
131
00:05:14,800 –> 00:05:18,400
دهیم که به این معنی است که در سمت چپ
132
00:05:18,400 –> 00:05:19,919
کلیدهای نگه داشته
133
00:05:19,919 –> 00:05:21,360
134
00:05:21,360 –> 00:05:23,680
شده ضربدر زمان در dt ضربدر
135
00:05:23,680 –> 00:05:25,759
0.5 هستند،
136
00:05:25,759 –> 00:05:28,080
بنابراین حالا اگر این را ذخیره کنم و اجرا کنم
137
00:05:28,080 –> 00:05:30,160
و a یا d را نگه
138
00:05:30,160 –> 00:05:32,560
دارم، خواهید دید که ماشین می تواند به همین ترتیب به
139
00:05:32,560 –> 00:05:34,400
چپ و
140
00:05:34,400 –> 00:05:36,960
راست حرکت کند،
141
00:05:36,960 –> 00:05:39,199
اما شما همچنین می بینید که اگر ماشین را
142
00:05:39,199 –> 00:05:41,199
خیلی به سمت راست
143
00:05:41,199 –> 00:05:43,280
حرکت دهم، از جاده خارج می شود و
144
00:05:43,280 –> 00:05:44,880
حتی از
145
00:05:44,880 –> 00:05:46,160
146
00:05:46,160 –> 00:05:47,039
147
00:05:47,039 –> 00:05:48,880
زمین اساساً خارج می شود،
148
00:05:48,880 –> 00:05:50,720
بنابراین ما می خواهیم این کار را انجام دهیم برخی از
149
00:05:50,720 –> 00:05:53,840
بررسی های مرزی
150
00:05:54,560 –> 00:05:56,000
این دارای برخی از بررسی های مرزی است که می
151
00:05:56,000 –> 00:05:58,479
توانیم آن را درست انجام دهیم
152
00:05:58,479 –> 00:06:00,080
153
00:06:00,080 –> 00:06:02,639
بنابراین میخواهیم بررسی کنیم که آیا car.x بزرگتر
154
00:06:02,639 –> 00:06:05,360
از 0.24 است
155
00:06:05,360 –> 00:06:07,759
و car.x را برابر یک دو چهار قرار میدهیم،
156
00:06:07,759 –> 00:06:09,759
بنابراین کارت سعی میکند از
157
00:06:09,759 –> 00:06:11,039
مرز سمت راست خارج شود
158
00:06:11,039 –> 00:06:12,880
، موقعیت x را برابر با
159
00:06:12,880 –> 00:06:15,120
160
00:06:15,120 –> 00:06:17,919
اگر نقطه x ماشین کمتر از برابر
161
00:06:17,919 –> 00:06:19,039
نقطه
162
00:06:19,039 –> 00:06:21,360
یا نقطه منفی دو
163
00:06:21,360 –> 00:06:23,120
هشت باشد آن قسمت x برابر با
164
00:06:23,120 –> 00:06:25,680
نقطه منفی دو هشت است
165
00:06:26,639 –> 00:06:29,120
و بنابراین اگر این را ذخیره کنم و اجرا
166
00:06:29,120 –> 00:06:31,120
کنم متوجه خواهید شد که
167
00:06:31,120 –> 00:06:33,680
اکنون ماشین من نمی تواند حرکت کند از این
168
00:06:33,680 –> 00:06:37,759
مرز جاده که دقیقاً همان چیزی است که ما میخواستیم،
169
00:06:39,280 –> 00:06:41,280
پس حالا که این را داریم، اجازه دهید در
170
00:06:41,280 –> 00:06:42,880
واقع موانع خود را برای بازی ایجاد کنیم،
171
00:06:42,880 –> 00:06:44,800
حالا موانعی که
172
00:06:44,800 –> 00:06:46,560
قرار است استفاده کنیم کدو تنبلهایی
173
00:06:46,560 –> 00:06:48,400
با بافتها و
174
00:06:48,400 –> 00:06:49,840
اندازههای مختلف خواهند بود،
175
00:06:49,840 –> 00:06:51,759
بنابراین ابتدا اجازه دهید یک لیست برای نگهداری
176
00:06:51,759 –> 00:06:54,639
تصاویر بافت
177
00:06:56,000 –> 00:06:58,560
درست در زیر ماشین خود ایجاد کنیم، میتوانیم
178
00:06:58,560 –> 00:07:02,360
فهرستی از بافتها ایجاد کنیم
179
00:07:02,639 –> 00:07:04,319
و برابر با
180
00:07:04,319 –> 00:07:06,800
یک دسته از بافتهای کدو تنبلی
181
00:07:06,800 –> 00:07:09,120
رنگ
182
00:07:11,120 –> 00:07:13,120
کدو تنبلی کدو تنبلی
183
00:07:13,120 –> 00:07:16,080
نرمال
184
00:07:16,080 –> 00:07:18,560
185
00:07:19,759 –> 00:07:22,319
زبری قرار دهیم
186
00:07:23,199 –> 00:07:26,560
و اکنون با استفاده از درک فهرست
187
00:07:26,560 –> 00:07:27,919
، بافتهایی را
188
00:07:27,919 –> 00:07:31,919
که میتوانیم در مسیر um اضافه کنیم
189
00:07:31,919 –> 00:07:34,639
برای e هر عنصر
190
00:07:34,639 –> 00:07:36,400
برای s در
191
00:07:36,400 –> 00:07:38,880
موارد اضافی،
192
00:07:41,360 –> 00:07:43,120
بنابراین اکنون میتوانیم این کار را انجام دهیم این است که موجودیت کدو تنبل خود را ایجاد کنیم
193
00:07:43,120 –> 00:07:44,800
و من این کار را درست در زیر موجودیت ماشین انجام میدهم،
194
00:07:44,800 –> 00:07:47,280
195
00:07:47,280 –> 00:07:50,879
بنابراین کدو تنبل برابر با موجودی است
196
00:07:50,879 –> 00:07:52,160
، میتوانم
197
00:07:52,160 –> 00:07:54,639
والد را برابر با
198
00:07:54,639 –> 00:07:57,039
مسیر چرخش حول محور x برابر قرار دهم. تا
199
00:07:57,039 –> 00:07:59,199
45 درجه
200
00:07:59,199 –> 00:08:01,520
نیز مدل برابر
201
00:08:01,520 –> 00:08:03,440
با فایل obj کدو تنبل است
202
00:08:03,440 –> 00:08:06,479
203
00:08:06,479 –> 00:08:08,960
، مقیاسی را که میتوانید
204
00:08:08,960 –> 00:08:11,120
در x 0.1 در محور
205
00:08:11,120 –> 00:08:14,879
y و نقطه یک در محور z به آن اشاره کنید،
206
00:08:15,199 –> 00:08:17,199
تنظیم میکنم و موقعیت را
207
00:08:17,199 –> 00:08:18,479
برابر با نقطه
208
00:08:18,479 –> 00:08:19,680
صفر در
209
00:08:19,680 –> 00:08:21,280
نه
210
00:08:21,280 –> 00:08:23,919
نقطه پنج تنظیم می