Додавання анімацій

Додавання анімацій


Щоб реалізувати анімацію в грі, використовуйте скрипти. У цьому посібнику ви реалізуєте попередньо створену анімацію перемоги за допомогою попередньо створеного сценарію. Після завершення цю анімацію можна використовувати, щоб відзначити досягнення гравця, як-от досягнення кінця оббі або знаходження секрету.

Анімація запускається за допомогою сценаріїв . Один із підходів полягає в тому, щоб використовувати події для відтворення анімацій у різноманітних ситуаціях, наприклад, коли гравець завершує рівень, перемагає ворога або навіть робить покупку в грі.

Для цього проекту ви створите частини, доторкання до яких запускатиме анімацію для цього гравця.

Щоб упорядкувати всі частини, які будуть відтворювати анімацію, додайте папку в Workspace (наведіть курсор на Workspace і натисніть +) під назвою TouchPartFolder.


У TouchPartFolder додайте частину.

Переконайтеся, що частина розміщена там, де відтворення анімації мало б сенс, наприклад, у кінці рівня або біля об’єкта, який збирають гравці.

Приклад партії Перемоги
Приклад взаємодії Частина


У StarterPlayer > StarterCharacterScripts створіть LocalScript під назвою TouchPartRegister. Потім скопіюйте та вставте код нижче.

-- Used with "PlayerAnimationFeedback" script to play animations on part touches

-- Services
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")

local player = Players.LocalPlayer
local character = player.Character or player.Character:Wait()
local humanoid = character:WaitForChild("Humanoid")
local canTouch = false

-- Include feedback animation module
local PlayerAnimationFeedback = require(ReplicatedStorage:WaitForChild("PlayerAnimationFeedback"))

-- Function called when a part is touched
local function onPartTouch(otherPart)
if humanoid and canTouch == false then
canTouch = true
PlayerAnimationFeedback:PlayAnimation()
canTouch = false
end
end

-- On startup, call animation module load function
PlayerAnimationFeedback:LoadAnimation(humanoid)
-- Also bind a folder of parts to the "Touched" event to run "onPartTouch()"
local touchPartFolder = workspace:WaitForChild("TouchPartFolder")
local touchParts = touchPartFolder:GetChildren()

for i, touchPart in touchParts do
touchPart.Touched:Connect(onPartTouch)
end



Цей сценарій знаходить усі частини в папці TouchPartFolder і надає їм події Touched(). Після запуску подія запускає функцію, яка відтворює анімацію для гравця.



Хоча цей сценарій використовує Touched() , також можна використовувати різні події, такі як MouseClick() або Changed() . Крім того, ваші власні ігрові події, як-от нарахування очок гравцеві, можуть запускатися зі сценарію TouchPartRegister. Щоб побачити приклад, який можна додати, перегляньте статтю Health Pickups для коду.


Наступний сценарій запускає анімацію для гравця. У ReplicatedStorage створіть новий ModuleScript під назвою PlayerAnimationFeedback. Потім скопіюйте та вставте наведений нижче код.

-- Used with "TouchPartRegister" script to play animations for a player
local PlayerAnimationFeedback = {}

local feedbackAnimationTrack
local ANIMATION_FADE = 0.3
local ANIMATION_ID = "rbxassetid://YOUR_ANIMATION"

-- Function to load animation onto player's character
function PlayerAnimationFeedback:LoadAnimation(humanoid)
local feedbackAnimation = Instance.new("Animation")
feedbackAnimation.AnimationId = ANIMATION_ID
feedbackAnimationTrack = humanoid.Animator:LoadAnimation(feedbackAnimation)
feedbackAnimationTrack.Priority = Enum.AnimationPriority.Action
feedbackAnimationTrack.Looped = false
end

-- Function to play the animation
function PlayerAnimationFeedback:PlayAnimation()
feedbackAnimationTrack:Play(ANIMATION_FADE)
task.wait(feedbackAnimationTrack.Length)
end

return PlayerAnimationFeedback


Відтворення анімацій

Сценарій повинен знати, яку анімацію відтворювати. Щоб використати експортовану анімацію, знайдіть її ідентифікатор ресурсу у веб-браузері. Цей ідентифікатор дозволить завантажити анімацію в сценарій.

Відкрийте розділ «Анімація» на сторінці «Створити».


Знайдіть і клацніть експортовану анімацію.


Скопіюйте його ідентифікатор із URL-адреси у вашому браузері.


У сценарії PlayerAnimationFeedback замініть заповнювач YOUR_ANIMATION (рядок 8) ідентифікатором, який ви скопіювали.


Запустіть проект і перевірте, що коли гравець влучає в частину, ви бачите анімацію.