Enemy Walk Cycle (1 post)

Topic tags: cycle, enemy, help, walk
  • Profile picture of jpilgram2010 jpilgram2010 said 6 months ago:

    im trying to get an enemy walk cycle (a.k.a. a walking model without need of keyboard/mouse inputs) and i’m just not hitting the nail on the head

    currently my code consists of (it’s a bit messy)

    private void setupEnemyAnimationController() {
            enemyAnimControl = enemyMod1.getControl(AnimControl.class);
            enemyAnimControl.addListener(this);
            enemyAnimChannel = enemyAnimControl.createChannel();
            enemyAnimChannel.setLoopMode(LoopMode.Loop);
        }
    
    @Override
        public void simpleUpdate(float tpf) {
    //  This part is the character controlled movements
            Vector3f camDir = cam.getDirection().clone().multLocal(0.1f);
            Vector3f camLeft = cam.getLeft().clone().multLocal(0.1f);
            Vector3f enemyCamDir = cam.getDirection().clone().multLocal(0.1f);
            Vector3f enemyCamLeft = cam.getLeft().clone().multLocal(0.1f);
            camDir.y = 0;
            camLeft.y = 0;
            if (left) {
                walkDirection.addLocal(camLeft);
            }
            if (right) {
                walkDirection.addLocal(camLeft.negate());
            }
            if (up) {
                walkDirection.addLocal(camDir);
            }
            if (down) {
                walkDirection.addLocal(camDir.negate());
            }
            if (!character.onGround()) {
                airTime = airTime + tpf;
            } else {
                airTime = 0;
            }
            if (walkDirection.length() == 0) {
                if (!"stand".equals(animationChannel.getAnimationName())) {
                    animationChannel.setAnim("stand", 1f);
                }
            } else {
                character.setViewDirection(walkDirection);
                if (airTime > .3f) {
                    if (!"stand".equals(animationChannel.getAnimationName())) {
                        animationChannel.setAnim("stand");
                    }
                } else if (!"Walk".equals(animationChannel.getAnimationName())) {
                    animationChannel.setAnim("Walk", 5f);
                }
            }
            character.setWalkDirection(walkDirection);
    
    //   This part is what i'm trying to work on
            enemyCamDir.y = 0;
            enemyCamLeft.y = 0;
            walkDirection.set(0, 0, 0);
            enemyWalkDirection.set(0, 0, 0);
            if(enemyMove) {
                //move forward 4 paces, turn left, walk forward 3 paces, turn left again, repeat
    //            for(int x = 1; x <= 4; x++) {
                    enemyWalkDirection.addLocal(enemyCamDir);
                    enemy1.setWalkDirection(enemyWalkDirection);
                    if (!"Walk".equals(enemyAnimChannel.getAnimationName())) {
                        enemyAnimChannel.setAnim("Walk", 2f);
                    }
    //            }
                enemyWalkDirection.addLocal(enemyCamLeft);
                enemy1.setWalkDirection(enemyWalkDirection);
                if (!"Walk".equals(enemyAnimChannel.getAnimationName())) {
                    enemyAnimChannel.setAnim("Walk", 2f);
                }
    //            for(int x = 1; x <= 3; x++) {
                    enemyWalkDirection.addLocal(enemyCamDir);
                    enemy1.setWalkDirection(enemyWalkDirection);
                    if (!"Walk".equals(enemyAnimChannel.getAnimationName())) {
                        enemyAnimChannel.setAnim("Walk", 2f);
                    }
    //            }
                enemyWalkDirection.addLocal(enemyCamLeft);
                enemy1.setWalkDirection(enemyWalkDirection);
                if (!"Walk".equals(enemyAnimChannel.getAnimationName())) {
                    enemyAnimChannel.setAnim("Walk", 2f);
                }
            }
        }

    any help or tutorials (i can’t seem to find any on this website) would be appreciated