本文整理汇总了C#中UnityEngine.GameObject.SampleAnimation方法的典型用法代码示例。如果您正苦于以下问题:C# GameObject.SampleAnimation方法的具体用法?C# GameObject.SampleAnimation怎么用?C# GameObject.SampleAnimation使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UnityEngine.GameObject
的用法示例。
在下文中一共展示了GameObject.SampleAnimation方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: StopAnim
void StopAnim(GameObject agent){
if (agent.GetComponent<ArmAnimator>().ArmC == null || agent.GetComponent<TorsoAnimator>().TorsoC == null) {
Debug.Log ("Controller not assigned");
return;
}
if (agent.animation.isPlaying) {
agent.SampleAnimation(agent.animation.clip, 0); //instead of rewind
agent.animation.Stop();
}
}
示例2: Analyze
public override void Analyze(GameObject o) {
Debug.Log("Starting analysis");
gameObject = o;
name = animation.name;
m_samples = 50;
// Initialize legs and cycle data
legC = gameObject.GetComponent(typeof(LegController)) as LegController;
legs = legC.legs.Length;
m_cycles = new LegCycleData[legs];
for (int leg=0; leg<legs; leg++) {
cycles[leg] = new LegCycleData();
cycles[leg].samples = new LegCycleSample[samples+1];
for (int i=0; i<samples+1; i++) {
cycles[leg].samples[i] = new LegCycleSample();
}
cycles[leg].debugInfo = new CycleDebugInfo();
}
graphMin = new Vector3(0, 1000, 1000);
graphMax = new Vector3(0,-1000,-1000);
for (int leg=0; leg<legs; leg++) {
// Sample ankle, heel, toe, and toetip positions over the length of the animation.
Transform ankleT = legC.legs[leg].ankle;
Transform toeT = legC.legs[leg].toe;
float rangeMax = 0;
float ankleMin; float ankleMax; float toeMin; float toeMax;
ankleMin = 1000;
ankleMax = -1000;
toeMin = 1000;
toeMax = -1000;
for (int i=0; i<samples+1; i++) {
LegCycleSample s = cycles[leg].samples[i];
gameObject.SampleAnimation(animation,i*1.0f/samples*animation.length);
s.ankleMatrix = Util.RelativeMatrix(ankleT,gameObject.transform);
s.toeMatrix = Util.RelativeMatrix(toeT,gameObject.transform);
s.heel = s.ankleMatrix.MultiplyPoint(legC.legs[leg].ankleHeelVector);
s.toetip = s.toeMatrix.MultiplyPoint(legC.legs[leg].toeToetipVector);
s.middle = (s.heel+s.toetip)/2;
// For each sample in time we want to know if the heel or toetip is closer to the ground.
// We need a smooth curve with 0 = ankle is closer and 1 = toe is closer.
s.balance = MotionAnalyzer.GetFootBalance(s.heel.y, s.toetip.y, legC.legs[leg].footLength);
// Find the minimum and maximum extends on all axes of the ankle and toe positions.
ankleMin = Mathf.Min(ankleMin,s.heel.y);
toeMin = Mathf.Min(toeMin,s.toetip.y);
ankleMax = Mathf.Max(ankleMax,s.heel.y);
toeMax = Mathf.Max(toeMax,s.toetip.y);
}
rangeMax = Mathf.Max(ankleMax-ankleMin,toeMax-toeMin);
// Determine motion type
/*if (motionType==MotionType.AutoDetect) {
motionType = MotionType.WalkCycle;
}*/
if (motionType==MotionType.WalkCycle) {
FindCycleAxis(leg);
// Foot stance time
// Find the time when the foot stands most firmly on the ground.
float stanceValue = Mathf.Infinity;
for (int i=0; i<samples+1; i++) {
LegCycleSample s = cycles[leg].samples[i];
float sampleValue =
// We want the point in time when the max of the heel height and the toe height is lowest
Mathf.Max(s.heel.y, s.toetip.y)/rangeMax
// Add some bias to poses where the leg is in the middle of the swing
// i.e. the foot position is close to the middle of the foot curve
+Mathf.Abs(
Util.ProjectOntoPlane(s.middle-cycles[leg].cycleCenter, Vector3.up).magnitude
)/cycles[leg].cycleScaling;
// Use the new value if it is lower (better).
if (sampleValue<stanceValue) {
cycles[leg].stanceIndex = i;
stanceValue = sampleValue;
}
}
}
else {
cycles[leg].cycleDirection = Vector3.forward;
cycles[leg].cycleScaling = 0;
cycles[leg].stanceIndex = 0;
}
// The stance time
cycles[leg].stanceTime = GetTimeFromIndex(cycles[leg].stanceIndex);
// The stance index sample
LegCycleSample ss = cycles[leg].samples[cycles[leg].stanceIndex];
// Sample the animation at stance time
gameObject.SampleAnimation(animation,cycles[leg].stanceTime*animation.length);
// Using the stance sample as reference we can now determine:
// The vector from heel to toetip at the stance pose
//.........这里部分代码省略.........