decided to post source code and video of homebase working. Download is as is, no warranty or license.
click here for more information
Keane client outreach site
Android Game Development – Part 2 Player & Input controls
Input Controls
In this section we will modify the GameEngineView to handle input controls. We do this by calling setFocusable(true); on the constructor of the view. All that is left is to override the onKeyDown and onKeyUp events.
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == android.view.KeyEvent.KEYCODE_DPAD_LEFT ) { st.setCurrentAnimation("walk_left", true); st.AnimateTo(new Point( st.getXpos()-40, st.getYpos())); } if(keyCode == android.view.KeyEvent.KEYCODE_DPAD_RIGHT) { st.setCurrentAnimation("walk_right", true); st.AnimateTo(new Point( st.getXpos()+40, st.getYpos())); } return super.onKeyDown(keyCode, event); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if(keyCode == android.view.KeyEvent.KEYCODE_DPAD_LEFT ) st.setCurrentAnimation("idle_left", false); if(keyCode == android.view.KeyEvent.KEYCODE_DPAD_RIGHT) st.setCurrentAnimation("idle_right", false); st.MoveTo(new Point( st.getXpos(), st.getYpos())); return super.onKeyUp(keyCode, event); }
In this snippet the “st” object is an Instance of the player object which will be discussed shortly. Note that on key down animate player, on key up we return him to the idle state.
Player
The player class houses the characteristics that a player consists of. We will use the Sprite Tile as the base object, this will take care of the visual part of our player. We will add function and attributes for animation
package com.warriormill.warriorengine; import android.content.Context; import android.graphics.Canvas; import android.graphics.Point; import com.warriormill.warriorengine.drawable.SpriteTile; public class Player extends SpriteTile { public float lifebar=100.0f; private Point move_to = new Point(10,10); public Player(int BitmapResourceId, int XmlAnimationResourceId, Context context) { super(BitmapResourceId, XmlAnimationResourceId, context); } public void AnimateTo(Point pt) { move_to = pt; } public void MoveTo(Point pt) { move_to =pt; this.setXpos(pt.x); this.setYpos(pt.y); } @Override public void draw(Canvas canvas) { super.draw(canvas); updateLocation(); } private void updateLocation() { if(move_to.y > this.getYpos()) this.setYpos(getYpos()+1); else if(move_to.y < this.getYpos()) this.setYpos(getYpos()-1); if(move_to.x > this.getXpos()) this.setXpos(getXpos()+1); else if(move_to.x < this.getXpos()) this.setXpos(getXpos()-1); } }
Preview