Почему я получаю эту ошибку, когда персонаж полностью загружен? - PullRequest
1 голос
/ 30 января 2020

Я пытаюсь вставить анимацию в мой код в первый раз. Вот мой код:

1   local player = game.Players.LocalPlayer
2   local char = player.Character or player.CharacterAdded:Wait()
3   local hum = char:WaitForChild("Humanoid")
4    
5   local animaInstance = Instance.new("Animation")
6   animaInstance.AnimationId = "rbxassetid://4641537766"
7    
8   local fireBallAnim = hum.LoadAnimation(animaInstance)
9   fireBallAnim:Play()

Я получаю сообщение об ошибке

The function LoadAnimation is not a member of Animation

Я знаю, что персонаж полностью загружен, поэтому я не понимаю. Могу ли я получить эту ошибку, если что-то не так с самой анимацией? Что еще я упускаю?

Спасибо

1 Ответ

0 голосов
/ 01 февраля 2020
local fireBallAnim = hum:LoadAnimation(animaInstance)

Это очень запутанное сообщение об ошибке. Единственная проблема заключается в том, что вы вызвали функцию-член с . вместо :. Переключение на двоеточие исправит вашу ошибку.


Когда вы вызываете функцию для объекта с двоеточием, он автоматически вставляет объект в качестве первого аргумента. Интересный пример этого можно увидеть в таблицах:

-- insert an object into the table 't'
local t = {}
table.insert(t, 1)
-- can also be written as...
t.insert(t, 1)
-- which is the same as...
t:insert(1)

Все эти вызовы делают одно и то же. Вызов функции с : является синтактическим c сахаром для помещения объекта t в качестве первого аргумента. Итак, в вашем коде происходит то, что вы вызываете LoadAnimation следующим образом:

local fireBallAnim = hum.LoadAnimation(<a humanoid object needs to go here>, <animation>)

Но так как вы передаете анимацию, где Humanoid должен go, он пытается найти функцию LoadAnimation на объект анимации и не удалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...