IKControl

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Instâncias de IKControl geram poses de animação procedimentais usando Kinática Inversa (IK).Eles permitem que você faça com que os personagens respondam realisticamente ao seu ambiente.

Por exemplo, você pode fazer com que um personagem coloque a mão em uma alça de porta exatamente, e o personagem fará isso independentemente de sua posição.Os controles IK fornecem a vantagem de precisar criar muito menos animações para o seu jogo, enquanto dá à sua experiência um sentimento mais realista e polido.

IKControls deve ser um filho de um Humanoid ou AnimationController com um Animator e ter todas as suas propriedades necessárias definidas corretamente, caso contrário, elas não terão nenhum efeito.As propriedades necessárias são Type , EndEffector , Target , ChainRoot .Assim que eles são definidos, o IkControl modifica a posição de seu personagem conforme você especifica.O seguinte exemplo de código mostra como configurar o seu primeiro IKControl e começar a criar animações mais realistas para o seu jogo.

Você pode usar IKControls para fazer um personagem:

  • Gire sua cabeça e torso para olhar para um ponto de interesse no mundo.
  • Modifique suas posições de pés para responder ao terreno dinâmico. Ajuste suas pernas e pés para colocá-los de acordo no terreno com pedras e planícies.
  • Segure uma arma e coloque as mãos dela adequadamente no cabo sem precisar criar animações para cada arma no jogo.
  • Mire em um ponto no mundo, para que a ponta do ponto da arma aponta exatamente para o que você quer atirar. Especialmente útil em atiradores de terceira pessoa.
  • Coloque as mãos no volante de um carro e siga-o quando girar.
  • Muito mais!

IKControl substituirá a animação para todas as peças entre o ChainRoot e o EndEffector .Você pode ativar/desativar usando Enabled ou alterar quanto eles têm um efeito sobre a animação subjacente usando o Weight.Tenha cuidado: se você não configurar seu IKControls corretamente, você pode gerar poses ruins e irrealistas!

Amostras de código

This sample shows the basic setup for an IKControl that moves a character's left arm to reach for a point in the world.

IKControl setup

local character = script.Parent.Character
local humanoid = character.Humanoid
local root = character.HumanoidRootPart
-- Create a new attachment to use as the IKControl.Target
local target = Instance.new("Attachment")
target.CFrame = CFrame.new(-1, 0, -1)
target.Parent = root
local ikControl = Instance.new("IKControl")
ikControl.Type = Enum.IKControlType.Position
ikControl.EndEffector = character.LeftHand
ikControl.ChainRoot = character.LeftUpperArm
ikControl.Target = target
ikControl.Parent = humanoid

Resumo

Propriedades

  • Ler Parallel

    A última parte em que você está interessado em mover seu personagem.Por exemplo, o braço superior.Deve ser um ancestral de EndEffector e ser um BasePart ou um Bone em seu personagem.

  • Ler Parallel

    Alterna o controle em e desligado. Verdadeiro por padrão.

  • Ler Parallel

    A parte que você está interessado em mover para chegar ao Target .Por exemplo, a mão do seu personagem.Deve ser um descendente de ChainRoot e ser um BasePart ou um Bone em seu personagem.

  • Um deslocamento adicional aplicado em cima do EndEffector em seu espaço local para mudar onde se move.

  • Ler Parallel

    Um deslocamento adicional aplicado em cima do Target para mudar onde o EndEffector se move.

  • Ler Parallel

    Uma instância opcional que determina em qual direção a corrente se dobra. Você pode usar isso para especificar em qual direção um punho ou joelho se dobra.

  • Ler Parallel

    Specifica a ordem em que os controles são resolvidos. Os valores mais altos têm maior prioridade.

  • Ler Parallel

    Specifica o número médio de segundos que leva para o EndEffector atingir suavemente o Target.

  • Ler Parallel

    O objeto que o EndEffector alcança ou aponta.Pode ser qualquer coisa que tenha uma posição no mundo, como BasePart , Attachment , Bone ou Motor6D.

  • Especifica como o solucionador satisfaz esse controle.

  • Ler Parallel

    Specifica o peso do alvo de controle IK. Deve estar na faixa [0, 1].

Propriedades

ChainRoot

Ler Parallel

Ao especificar um ChainRoot e um EndEffector, você instrui o IKControl que é permitido mover e girar todas as peças entre os dois para mover o EndEffector para o Target .Por exemplo, se você especificar a LeftHand como EndEffector e a LeftUpperArm como ChainRoot, o controle move 3 partes: a LeftHand, o LeftLowerArm e o LeftUpperArm.Evite definir ChainRoot como a raiz real do personagem porque isso produz resultados irrealistas.

Enabled

Ler Parallel

Essa propriedade permite que você ative e desligadoo controle de IK.Está ativado por padrão.Quando Enabled é falso, o controle IK está desativado e não é resolvido pelo solucionador subjacente.

EndEffector

Ler Parallel

O EndEffector descreve a última parte na cadeia do seu personagem que você deseja afetar.Por exemplo, pode ser a mão quando você quiser mover todo o braço para chegar a um ponto.Pode ser um BasePart em um personagem, que tem um Motor6D como filho, um Motor6D diretamente, um Bone ou um Attachment.O pivô do selecionado EndEffector move-se para o Target , então você pode usar Attachments para modificar qual ponto de um BasePart deve chegar ao Target .

EndEffectorOffset

Ler Parallel

O deslocamento do efeito final é um adicional de aplicado sobre o que produz o final usado para colocar o .Por padrão, é o CFrame de identidade, então, se você não definir, ele não tem efeito e o usa o diretamente, o que é especificado no espaço local do .

Alternativamente, você pode usar anexos definindo um anexo como EndEffector , que o move para o Target em vez das peças a que está anexado, obtendo efetivamente o mesmo resultado.

Você também pode usar EndEffectorOffset para modificar qual eixo do EndEffector deve apontar para o Target ao usar LookAt como Type .

Offset

Ler Parallel

O deslocamento é um adicional de aplicado em cima do que produz o final usado para colocar o .É a identidade padrão, então se você não definir, ela não terá efeito e o usará o diretamente.Você pode animá-lo para criar animações procedurais, como digitar em um teclado.É útil quando o Target e o EndEffector não estão alinhados e você precisa corrigi-los com uma rotação ou tradução adicional.

Ler Parallel

O Pole é uma opção Instance que lhe dá controle sobre como as peças intermediárias em seu personagem devem se dobrar.Pode ser qualquer coisa que tenha uma posição no mundo, como BasePart , Attachment , Bone , Motor6D .Por padrão, é nil.Quando você especifica isso, o solucionador subjacente fará com que as peças se dobrem em direção a ele.Quando é nil , o solucionador tentará fazer com que os cotovelos e joelhos se dobrem adequadamente com base na perna do personagem.A perna será "Braço" quando você selecionar como o EsquerdaMão ou DireitaMão e como o correspondente BraçoEsquerdo ou BraçoDireito , e será "Perna" quando você selecionar como o EsquerdaPé ou DireitaPé e como o correspondente BraçoEsquerdo ou BraçoDireito .Em todos os outros casos, se você não especificar um pilar, a corrente pode não se dobrar como você espera.

Priority

Ler Parallel

Quando vários controles estão ativos em um personagem, a ordem em que eles são resolvidos pelo sistema subjacente afeta a postura final gerada.Ao alterar esse valor, você especifica a ordem em que os controles são satisfeitos.Os valores mais altos têm prioridade maior e os controles de prioridade mais alta são resolvidos mais tarde, pois seu resultado pode anular o resultado anterior de outros controles.Se você tiver vários controles IK em um personagem e um for mais importante que o outro, especifique uma prioridade mais baixa para ele.É 0 por padrão, o que significa que todos os controles têm a mesma prioridade.

SmoothTime

Ler Parallel

Este valor especifica o número médio de segundos que leva para o EndEffector alcançar o Target.O comportamento é o de uma mola críticamente amortecida, onde a taxa de mudança é proporcional à distância ao alvo e não há oscilações quando se aproxima do alvo.Valores menores criam uma convergência mais rápida e valores maiores criam uma convergência mais lenta.Um valor de 0 desabilita a suavização.O valor padrão é 0.05 para fornecer uma suavização muito leve que torna o movimento parecer realista.

Target

Ler Parallel

O Target representa um ponto ( CFrame ) no mundo que você quer que seu EndEffector alcance.O comportamento exato de alcançar pode ser definido através da propriedade Type, e um adicional Offset pode ser aplicado sobre ele para modificá-lo.Se você definir um Target que será movido pela física ou por um script, em cada quadro o IKControl tentará satisfazê-lo, atualizando automaticamente o ponto a alcançar.

Ler Parallel

Ao alterar o Type, você pode alterar o comportamento do controle. Estas são as opções disponíveis:

Weight

Ler Parallel

Você pode controlar o quanto um determinado controle afeta a postura do personagem usando essa propriedade.Os valores devem estar na faixa [0, 1].0 significa nenhum efeito, e 1 significa o efeito completo do controle IK.Os valores fora deste alcance são truncados.Variar suavemente esse valor permite que você misture dentro ou fora de um controle específico para evitar movimentos violentos.É 1 por padrão.

O peso determina o fator de interpolação entre o Efeito Final e o alvo IK.Definir o peso para 0 não desabilita o Controle de IK porque outros fatores, incluindo o fator de suavização SmoothTime e Pole, ainda podem alterar a posição.Para realmente desativar o Controle de IK, transforme a propriedade Enabled em falso.

Métodos

GetChainCount


Devolução

GetChainLength


Devolução

GetNodeLocalCFrame

Parâmetros

index: number
Valor Padrão: ""

Devolução

GetNodeWorldCFrame

Parâmetros

index: number
Valor Padrão: ""

Devolução

GetRawFinalTarget


Devolução

GetSmoothedFinalTarget


Devolução

Eventos