我有逆运动学的问题。我无法移动触手,我不知道为什么。我实现了许多简单的骨架并成功了,但在这种情况下,一定有我遗漏的东西。希望你能帮我!
这里有详细的解释:
1.- 此图像显示我要移动的触手。*“Flup”是一个包含触手和下方圆圈的影片剪辑。*触手本身是另一个电影剪辑(如前所述在“Flup”内)*触手拥有一个电枢
我只想创建一个简单的动作来开始,所以在这种情况下,我只会尝试移动蓝色骨骼。
2.- Flup 是一个类,所以我在一帧中创建一个实例
import IllGame.enemy.boss.*;
stage.addEventListener(MouseEvent.CLICK,moveTentacle);
//Creation of the monster and insertion into stage
var flup:Flup=new Flup();
flup.x=300;
flup.y=200;
stage.addChild(flup);
//Moves the tentacle (in this case the blue bone)
//to the click point
function moveTentacle(e:MouseEvent):void{
flup.moveArmature(mouseX,mouseY);
}
3.- Flup 类,此时非常简单
package IllGame.enemy.boss{
import flash.display.MovieClip;
public class Flup extends MovieClip{
public function Flup(){
}
//Recives the coordinates of the click point
//"TentacleOne" is the instance name of the tentacle
public function moveArmature(x:Number,y:Number){
this.tentacleOne.moves(x,y);
}
}
}
4.- 接下来,我们有触手类。这个类是 Flup 将拥有的每条触手的父亲,所以它是“TentacleOne”的父亲
package IllGame.enemy.boss{
import flash.geom.Point;
import flash.display.MovieClip;
import fl.ik.*;
public class Tentacle extends MovieClip{
//Variables needed for inverse quinematic
private var armature:IKArmature;
private var bone:IKBone;
private var joint:IKJoint;
private var point:Point;
private var movement:IKMover;
private var armatureName:String;
private var bonesName:String;
private var bonesNumber:int;
public function Tentacle(armatureName:String,bonesName:String,bonesNumber:int){
this.armatureName=armatureName;
this.bonesName=bonesName;
this.bonesNumber=bonesNumber;
armature=IKManager.getArmatureByName(armatureName);
}
//This function is supposed to move the 7º bone (the blue one)
public function moves(x:Number,y:Number){
bone=armature.getBoneByName(bonesName+"7");
joint=bone.headJoint;
movement=new IKMover(joint,joint.position);
movement.moveTo(new Point(x,y));
}
}
}
5.- 最后是 TentacleOne 类,它只向其父亲发送信息
package IllGame.enemy.boss
{
public class FlupTentacleOne extends Tentacle{
const NUM_BONES:int=7;
public function FlupTentacleOne(){
super("Armature_20","ikBoneName",NUM_BONES);
}
}
}
很抱歉这篇长文,但我真的很生气,不知道问题出在哪里。感谢所有试图帮助我的人。
PS:当我运行此代码时,骨架位置的 X 和 Y 变量被修改,但在视觉上骨架保持静态。