Rocket Control
Описание : Теперь у CJ'я появилась возможность наблюдать из камеры , установленной на каждой ракете , за её действиями .И мало того , Carl теперь умеет управлять самой рактеой :D Управление : чтобы понаблюдать за летящей ракетой надо запустить её держа клавишу "~" (тильда) . Если хотите вернуть камеру в нормальное состояние , тогда отпускайте "~" . Чтобы управлять полётом ракеты используем мышку . По горизонтальной оси ракета поворачивается идеально , а вот по вертикальной не очень :D , так что прийдётся привыкать , ну я приловчился за время его написания (около часа) .
:RocketCam
wait 0
if
Player.Defined($PLAYER_CHAR)
jf @RocketCam
0470: 0@ = actor $PLAYER_ACTOR current_weapon
if or
0@ == 35
0@ == 36
jf @RocketCam
Actor.StorePos($PLAYER_ACTOR,0@,1@,2@)
3@ = 10.0
gosub @AIC_GETOBJECT
0@ = 304550
if and
9@ -1
&0(0@,1i) == 0xFF
jf @RocketCam
if
Object.Model(9@) == #MISSILE
jf @RocketCam
20@ = 304550
:RocketCam_BeginCheck
wait 0
if or
83CA: not object 9@ exists
not &0(20@,1i) == 0xFF
then
Object.RemoveReferences(9@)
Camera.Restore_WithJumpCut
Camera.SetBehindPlayer
jump @RocketCam
end
:RocketCam_Vertical
Object.StorePos(9@,0@,1@,2@)
015F: set_camera_position 0@ 1@ 2@ rotation 0.0 0.0 0.0
0400: store_coords_to 0@ 1@ 2@ from_object 9@ with_offset 0.0 1.0 0.0
0160: set_camera_point_at 0@ 1@ 2@ mode 2
0A4A: store_joystick_X_offset_to 2@ Y_offset_to 1@
if or
1@ > 5.01
-5.01 > 1@
jf @RocketCam_EndCheck
if 1@ > 0.01
then
05A2: set_object 9@ rotation_velocity_about_an_axis 0.25 0.0 0.0 through_center_of_body
end
if -0.01 > 1@
then
05A2: set_object 9@ rotation_velocity_about_an_axis -0.25 0.0 0.0 through_center_of_body
end
:RocketCam_EndCheck
if or
83CA: not object 9@ exists
not &0(20@,1i) == 0xFF
then
Object.RemoveReferences(9@)
Camera.Restore_WithJumpCut
Camera.SetBehindPlayer
jump @RocketCam
end
jump @RocketCam_BeginCheck