Điều khiển spite bằng cảm biến gia tốc

package KDstudio.h0aKD.SensorControlExample;

import android
.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.view.Display;

import com.e3roid.E3Activity;
import com.e3roid.E3Engine;
import com.e3roid.E3Scene;
import com.e3roid.drawable.Sprite;
import com.e3roid.drawable.texture.AssetTexture;

public class SensorcontrolexampleActivity extends E3Activity implements SensorEventListener {

private int WIDTH;
private int HEIGHT;

private AssetTexture playerTexture; 
private Sprite player;
private SensorManager sensorManager;
private int getX;
private int getY;
private int moveY;
private int moveX;


@Override
public void onLoadResources() {

playerTexture = new AssetTexture("player.png", this);
}

@Override
public E3Engine onLoadEngine() {

Display display = getWindowManager().getDefaultDisplay();
WIDTH = display.getWidth();
HEIGHT = display.getHeight(); 
E3Engine engine = new E3Engine(this, WIDTH, HEIGHT);

engine.requestFullScreen();
engine.requestLandscape();
return engine;

}
@Override
public E3Scene onLoadScene() {
E3Scene scene = new E3Scene();

int centerX = (getWidth() - playerTexture.getWidth()) / 2;
int centerY = (getHeight() - playerTexture.getHeight()) / 2; 
player = new Sprite(playerTexture, centerX, centerY);

//Đăng kí để lắng nghe sự kiện thay đổi sensor
sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
sensorManager.registerListener( this,sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),1000); //delay là 1000 mili giây 

scene.getTopLayer().add(player);

return scene;
}

public void onSensorChanged(SensorEvent event) {
float[] values = event.values;
//lấy giá trị tọa độ X và Y thông qua giá trị thay đổi sensor
getX = Math.round(values[1]);
getY = Math.round(values[0]);

//Giới hạn không cho player ra khỏi scene theo chiều x
if (player.getRealX()+getX<0)
{
moveX =0;
}
else if(player.getRealX()+getX>getWidth()- playerTexture.getWidth())
{
moveX = getWidth() - playerTexture.getWidth(); 
}
else moveX=player.getRealX()+getX;

//Giới hạn không cho player ra khỏi scene theo chiều y
if (player.getRealY()+getY<0)
{
moveY =0;
}
else if(player.getRealY()+getY>getHeight()- playerTexture.getHeight())
{
moveY = getHeight() - playerTexture.getHeight(); 
}
else moveY=player.getRealY()+getY;

//Di chuyển player
player.move(moveX,moveY);
}

public void onAccuracyChanged(Sensor arg0, int arg1) {

}

}

0 nhận xét:

Đăng nhận xét