AnyPortrait > 스크립트 > 본
본을 직접 참조하거나 제어하는 함수들입니다.
본의 소켓을 참조하거나 IK로 제어하는 함수들을 포함합니다.
이름으로 본을 찾아서 리턴합니다.
루트 유닛 인덱스를 지정하지 않는다면 먼저 현재 렌더링되는 루트 유닛부터 전체 검색을 합니다.
int rootUnitIndex : 루트 유닛의 인덱스 (없을 경우 전체 검색)
string boneName : 참조하고자 하는 본의 이름
apOptBone : 검색된 본. 없을 경우 null 리턴
본의 소켓을 참조합니다.
소켓에 대해서는 관련 페이지를 참고하시길 바랍니다.
apOptBone optBone : 소켓을 포함하는 본
int rootUnitIndex : 루트 유닛의 인덱스 (없을 경우 전체 검색)
string boneName : 참조하고자 하는 본의 이름
Transform : 본의 소켓 트랜스 폼. 없을 경우 null 리턴
본의 위치를 제어합니다.
가중치를 이용하여 보간할 수 있습니다.
IK는 동작하지 않습니다.
apOptBone optBone : 제어하고자 하는 본
int rootUnitIndex : 루트 유닛의 인덱스 (없을 경우 전체 검색)
string boneName : 제어하고자 하는 본의 이름
Vector3 position : 옮기고자 하는 위치
Space space : 위치 매개변수의 좌표계. World는 씬의 좌표계를 의미하며, Self는 apPortrait의 좌표계를 의미합니다.
float weight : 애니메이션되는 본의 위치와의 보간 가중치
bool : 존재하지 않는 본을 참조하고자 했다면 false 리턴
본의 회전 각도를 제어합니다.
가중치를 이용하여 보간할 수 있습니다.
apOptBone optBone : 제어하고자 하는 본
int rootUnitIndex : 루트 유닛의 인덱스 (없을 경우 전체 검색)
string boneName : 제어하고자 하는 본의 이름
float angle : 회전하고자 하는 각도 (Degree)
Space space : 회전 매개변수의 좌표계. World는 씬의 좌표계를 의미하며, Self는 apPortrait의 좌표계를 의미합니다.
float weight : 애니메이션되는 본의 각도와의 보간 가중치
bool : 존재하지 않는 본을 참조하고자 했다면 false 리턴
본의 크기를 제어합니다.
가중치를 이용하여 보간할 수 있습니다.
apOptBone optBone : 제어하고자 하는 본
int rootUnitIndex : 루트 유닛의 인덱스 (없을 경우 전체 검색)
string boneName : 제어하고자 하는 본의 이름
Vector3 scale : 크기 값
Space space : 크기 매개변수의 좌표계. World는 씬의 좌표계를 의미하며, Self는 apPortrait의 좌표계를 의미합니다.
float weight : 애니메이션되는 본의 크기와의 보간 가중치
bool : 존재하지 않는 본을 참조하고자 했다면 false 리턴
IK 방식으로 본을 이동합니다.
본의 IK 설정을 하는 방법은 관련 페이지를 참고하세요.
가중치를 이용하여 보간할 수 있습니다.
apOptBone optBone : 제어하고자 하는 본
int rootUnitIndex : 루트 유닛의 인덱스 (없을 경우 전체 검색)
string boneName : 제어하고자 하는 본의 이름
Vector3 position : 이동하고자 하는 위치. IK에 따라 해당 위치에 도달하지 못할 수 있습니다.
Space space : 위치 매개변수의 좌표계. World는 씬의 좌표계를 의미하며, Self는 apPortrait의 좌표계를 의미합니다.
float weight : 애니메이션되는 본의 위치와의 보간 가중치
bool isContiuous : true라면 이전 프레임의 IK 결과를 참고하여 자연스러운 결과가 되도록 합니다.
bool : 존재하지 않는 본을 참조하고자 했다면 false 리턴
IK 방식과 유사하게 본을 회전하여 요청한 위치를 바라보게 합니다.
SetBoneIK()와 다르게 1개의 본을 회전시킵니다.
IK 설정의 영향을 받지 않습니다.
apOptBone optBone : 제어하고자 하는 본
int rootUnitIndex : 루트 유닛의 인덱스 (없을 경우 전체 검색)
string boneName : 제어하고자 하는 본의 이름
Vector3 position : 바라보고자 하는 위치
Space space : 위치 매개변수의 좌표계. World는 씬의 좌표계를 의미하며, Self는 apPortrait의 좌표계를 의미합니다.
float weight : 애니메이션되는 본의 회전값과의 보간 가중치
bool : 존재하지 않는 본을 참조하고자 했다면 false 리턴
본의 위치를 제한합니다.
각각의 축에 대해서 범위를 설정할 수 있습니다.
매 업데이트마다 새로 호출해야하며, ConstraintBound 타입을 다르게하여 중복되어 호출할 수 있습니다.
apOptBone optBone : 대상이 되는 본
int rootUnitIndex : 루트 유닛의 인덱스 (없을 경우 전체 검색)
string boneName : 대상이 되는 본의 이름
float positionValue : 제한하고자 하는 위치의 값
ConstraintBound constraintBound : X, Y 축에 대해서 각각 "최소, 최대, 권장"의 타입을 가집니다.
Space space : 위치 매개변수의 좌표계. World는 씬의 좌표계를 의미하며, Self는 apPortrait의 좌표계를 의미합니다.
bool : 존재하지 않는 본을 참조하고자 했다면 false 리턴
X, Y축에 대해서 기준 표면 위치를 설정하고, 현재 표면 위치를 입력하면 그 차이만큼 본의 위치가 보정됩니다.
최소, 최대 범위를 지정하여 위치 보정이 안정적으로 수행되도록 합니다.
본을 직접 제어하는 것이 아니므로 FK로 작성된 애니메이션이 유지되는 효과가 있습니다.
apOptBone optBone : 제어하고자 하는 본
int rootUnitIndex : 루트 유닛의 인덱스 (없을 경우 전체 검색)
string boneName : 제어하고자 하는 본의 이름
float defaultSurfacePosition : 기준이 되는 표면 위치로, 대체로 일정한 값이 입력되어야 합니다.
float currentSurfacePosition : 현재 표면의 위치
float minSurfacePosition : 표면 위치의 최소 값
float maxSurfacePosition : 표면 위치의 최대 값
ConstraintSurface constraintSurface : 표면의 축 (X, Y)
Space space : 위치 매개변수의 좌표계. World는 씬의 좌표계를 의미하며, Self는 apPortrait의 좌표계를 의미합니다.
bool : 존재하지 않는 본을 참조하고자 했다면 false 리턴
using UnityEngine;
using AnyPortrait;
public class BoneTest : MonoBehaviour
{
public apPortrait portrait;
void Start () { }
void Update ()
{
if(Input.GetMouseButtonDown(0))
{
Vector3 touchPosWorld = Camera.main.ScreenToWorldPoint(
new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0));
portrait.SetBoneIK(0, "Bone Hand R", touchPosWorld, Space.World, 1.0f, true);
}
}
}