SampleGameActivityのFragment版作成
タッチイベントも動いた。全部動いた。
1 parent 14dd9a5 commit 40e55d08a82e68a3c0d33ec8de12975cf0013513
n-konishi authored on 19 Jun 2018
Showing 7 changed files
View
2
■■■
app/build.gradle
implementation 'com.android.support:support-v4:27.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation group: 'net.arnx', name: 'jsonic', version: '1.3.10'
implementation group: 'net.arnx', name: 'jsonic', version: '1.3.10'
implementation 'com.android.support:cardview-v7:27.1.1'
implementation 'com.google.android.gms:play-services-maps:15.0.1'
}
View
10
app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleActivity.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample);
 
//初期Fragmentの設定
Fragment fragment;
fragment = new StartFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_field, fragment).commit();
// //初期Fragmentの設定(初めに出すFragmentにはいらないっぽい)
// Fragment fragment;
// fragment = new StartFragment();
// getSupportFragmentManager().beginTransaction().replace(R.id.fragment_field, fragment).commit();
 
}
}
View
144
app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleGame2Fragment.java 0 → 100644
package org.ntlab.radishforandroidstudio.cactusClient.tests;
 
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
 
import org.ntlab.radishforandroidstudio.R;
import org.ntlab.radishforandroidstudio.framework.animation.Animation3D;
import org.ntlab.radishforandroidstudio.framework.gameMain.OvergroundActor;
import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DFragment;
import org.ntlab.radishforandroidstudio.framework.model3D.ModelFactory;
import org.ntlab.radishforandroidstudio.framework.model3D.Object3D;
import org.ntlab.radishforandroidstudio.framework.model3D.Position3D;
import org.ntlab.radishforandroidstudio.framework.physics.Ground;
import org.ntlab.radishforandroidstudio.framework.physics.Velocity3D;
import org.ntlab.radishforandroidstudio.java3d.AmbientLight;
import org.ntlab.radishforandroidstudio.java3d.Appearance;
import org.ntlab.radishforandroidstudio.java3d.Color3f;
import org.ntlab.radishforandroidstudio.java3d.DirectionalLight;
import org.ntlab.radishforandroidstudio.java3d.Material;
import org.ntlab.radishforandroidstudio.java3d.Vector3f;
 
public class SampleGame2Fragment extends RealTime3DFragment {
private OvergroundActor pocha;
private Ground stage;
private boolean isTouched = false;
private float touchX = 0.0f;
private float touchY = 0.0f;
 
public SampleGame2Fragment() {
// Required empty public constructor
}
 
@Override
public void onCreate(Bundle savedInstanceState) {
 
super.onCreate(savedInstanceState);
//環境光
AmbientLight amblight = new AmbientLight(new Color3f(1.0f, 1.0f, 1.0f));
 
// amblight.setInfluencingBounds(new BoundingSphere(new Point3d(), 10000.0));
universe.placeLight(amblight);
 
//平行光源
DirectionalLight dirlight = new DirectionalLight(
new Color3f(1.0f, 1.0f, 1.0f), //光の色
new Vector3f(0.0f, -1.0f, -0.5f) //光の方向ベクトル
);
// dirlight.setInfluencingBounds(new BoundingSphere(new Point3d(), 10000.0));
universe.placeLight(dirlight);
 
Appearance ap1 = new Appearance();
Material m = new Material();
m.setDiffuseColor(0.0f, 0.3f, 1.0f);
m.setAmbientColor(0.0f, 0.0f, 0.0f);
m.setEmissiveColor(0.0f, 0.0f, 0.0f);
m.setSpecularColor(0.0f, 0.0f, 0.0f);
m.setShininess(5.0f);
ap1.setMaterial(m);
 
Object3D pochaBody = null;
try {
pochaBody = ModelFactory.loadModel(getResources(), "pocha.stl", ap1).createObject();
Animation3D pochaAnimation = null; //AnimationFactory.loadAnimation("data\\pocha\\walk.wrl");
pocha = new OvergroundActor(pochaBody, pochaAnimation);
pocha.setPosition(new Position3D(0.0, -100.0, 250.0));
universe.place(pocha);
} catch (Exception e) {
e.printStackTrace();
}
 
Appearance ap2 = new Appearance();
Material m2 = new Material();
m2.setDiffuseColor(0.1f, 0.0f, 0.02f);
m2.setAmbientColor(0.1f, 0.1f, 0.1f);
m2.setEmissiveColor(0.0f, 0.0f, 0.0f);
m2.setSpecularColor(0.2f, 0.2f, 0.2f);
m2.setShininess(5.0f);
ap2.setMaterial(m2);
 
Object3D stageObj = null;
try {
stageObj = ModelFactory.loadModel(getResources(), "konan/konan.obj").createObject();
stage = new Ground(stageObj);
universe.place(stage);
} catch (Exception e) {
e.printStackTrace();
}
 
camera.setViewPoint(pocha.getPosition().add(0.0, 1.5, 0.0));
camera.setViewLine(pocha.getDirection());
camera.setFieldOfView(1.5);
camera.setBackClipDistance(10000.0);
start(1000L, 50L, true);
}
 
@Override
protected void progress(long interval) {
Velocity3D curV = pocha.getVelocity();
if (isTouched) {
pocha.rotY(0.1 * (0.5f - touchX) * (double)(interval / 15.0));
curV.setX(pocha.getDirection().getX() * 200.0 * (0.5f - touchY));
curV.setZ(pocha.getDirection().getZ() * 200.0 * (0.5f - touchY));
pocha.setVelocity(curV);
} else {
curV.setX(0.0);
curV.setZ(0.0);
pocha.setVelocity(curV);
}
camera.setViewPoint(pocha.getPosition().add(0.0, 15.0, 0.0));
camera.setViewLine(pocha.getDirection());
}
 
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_sample_game2, container, false);
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
 
if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
isTouched = true;
float maxX = event.getDevice().getMotionRange(MotionEvent.AXIS_X).getMax();
float minX = event.getDevice().getMotionRange(MotionEvent.AXIS_X).getMin();
float maxY = event.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMax();
float minY = event.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMin();
touchX = (event.getX() - minX) / (maxX - minX);
touchY = (event.getY() - minY) / (maxY - minY);
} else if (event.getAction() == MotionEvent.ACTION_UP) {
isTouched = false;
}
return true;
}
});
return view;
}
}
View
app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/StartFragment.java
View
app/src/main/res/layout/activity_sample.xml
View
app/src/main/res/layout/fragment_sample_game.xml
View
app/src/main/res/layout/fragment_sample_game2.xml 0 → 100644