Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

I am attempting to make a sea serpent, and I want to know how to make it be able to turn in any place, or at each 'segment', somewhat like the snakes in mocreatures. I know how to make mobs in general, rendering and modelling, as well as AI, so it's just this single element.

I am using Forge if that helps.

share|improve this question
4  
Pretty broad question in the title. If it's complex, it's unlikely there's going to be an answer that's general enough to cover how to make any given mob. Focusing on the sea serpent will make the question too localized, since it's unlikely to help any future visitors. For most complex tasks you can divide and conquer. Break up the task into manageable sub-tasks and complete them separately. Then join them together to create your finished mob. –  Byte56 Dec 14 '12 at 6:29
    
@Byte56 Maybe, just maybe, the question title should be changed to "an articulated mob" so it's not too general and not too localized? –  Laurent Couvidou Dec 14 '12 at 10:21
    
@LaurentCouvidou Yeah, change it, the community will decide. I don't really think "how to make mod x" are on topic for this site anyway, (I think it's better to ask on the forum for whatever game the mod is for) but I'm just one person. –  Byte56 Dec 14 '12 at 15:59
add comment

1 Answer

I would look into the model class, particularly the Ender Dragon model class, to see how the wings are animated.

If you want a good place to start, looking at the chest model class can help. It shows the barebone basics of how a multi-boned/part mob works, with each 'box' having a different rotation around whatever axis, allowing you to rotate it somewhat like this:

public ModelRenderer segment;

public ModelSnake() {
    this.segment.addBox(0.0F, -5.0F, -14.0F, 14, 5, 14, 0.0F);
    this.segment.rotationPointX = 1.0F;
    this.segment.rotationPointY = 7.0F;
    this.segment.rotationPointZ = 15.0F;
}

public void renderAll() {
    this.segment.render(0.0625F);
}
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.