diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnPlayer.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnPlayer.java index 3323298..a4780cc 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnPlayer.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnPlayer.java @@ -1,7 +1,6 @@ package org.ntlab.radishforandroidstudio.cactusClient.models; import android.content.res.Resources; - import android.view.MotionEvent; import android.view.View; @@ -29,13 +28,10 @@ import java.util.ArrayList; public class OwnPlayer implements PadListener, GameBaseModel, CallBack { - private boolean isPadTouched = false; + private boolean isPadTouched = false; //Padのタッチ判定 private float touchPadX = 0.0f; private float touchPadY = 0.0f; - - - private float eyeX = 0.0f; - private float eyeY = 0.0f; + double n = 1.0; private OvergroundActor actor; private Camera3D camera; @@ -78,22 +74,18 @@ camera.setViewLine(actor.getDirection()); camera.setFieldOfView(1.5); camera.setBackClipDistance(10000.0); - updateCamera(); + updateCamera(n); } - - - public void setPlayerId(String id) { playerId = id; } - public void updateCamera() { + public void updateCamera(double n) { Vector3d charaVector3d = actor.getDirection(); charaVector3d.normalize();//キャラの向きを単位ベクトルに - camera.setViewPoint(actor.getPosition() - .add(5.0 * charaVector3d.getX() , charaVector3d.getY() + 5.0, 5.0 * charaVector3d.getZ() ));//視点 - camera.setViewLine(new Vector3d(-5.0 * charaVector3d.getX(), charaVector3d.getY() - 2.5 , -5.0 * charaVector3d.getZ()+ eyeX));//視線 + camera.setViewPoint(actor.getPosition().add(5.0 * charaVector3d.getX(), charaVector3d.getY() + 5.5 - n, 5.0 * charaVector3d.getZ()));//視点 + camera.setViewLine(new Vector3d(-5.0 * charaVector3d.getX(), charaVector3d.getY() - 2.5 + n, -5.0 * charaVector3d.getZ()));//視線 } /** @@ -108,13 +100,10 @@ charaVector3d.normalize();//キャラの向きを単位ベクトルに MotionEvent motionEvent = event.getMotionEvent(); - if (motionEvent.getAction() == MotionEvent.ACTION_DOWN || motionEvent.getAction() == MotionEvent.ACTION_MOVE) { isPadTouched = true; touchPadX = (float) (Math.cos(event.getAngle()) * event.getLength()); touchPadY = (float) (Math.sin(event.getAngle()) * event.getLength()); - - } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) { Velocity3D vel = actor.getVelocity(); vel.setX(0); @@ -122,25 +111,23 @@ actor.setVelocity(vel); isPadTouched = false; } - return false; } @Override public void update(double interval) { - updateCamera(); + updateCamera(n); Velocity3D vel = actor.getVelocity(); Vector3d actorVec = actor.getDirection(); bullets.setPosition(actor.getPosition()); - bullets.setAngle(((Solid3D)(actor.getBody())).getQuaternion()); + bullets.setAngle(((Solid3D) (actor.getBody())).getQuaternion()); if (isPadTouched) { - - Vector3d up = new Vector3d(0,1,0); + Vector3d up = new Vector3d(0, 1, 0); Vector3d total = new Vector3d(); Vector3d right = new Vector3d(); - right.cross(actorVec,up); + right.cross(actorVec, up); Vector3d touchXVec = right.clone(); Vector3d touchYVec = actorVec.clone(); @@ -155,11 +142,9 @@ vel.setVector3d(total); actor.setVelocity(vel); - } else { vel.setX(0.0); vel.setZ(0.0); - actor.setVelocity(vel); } @@ -174,7 +159,7 @@ con = new CharacterConnection(playerId); con.setCallBack(this); - Quaternion3D q = ((Solid3D)(actor.getBody())).getQuaternion(); + Quaternion3D q = ((Solid3D) (actor.getBody())).getQuaternion(); player.setPosition(actor.getPosition()); player.setAngle(q); @@ -197,23 +182,27 @@ } - public void jump(){ - if(actor.isOnGround()) { + public void jump() { + if (actor.isOnGround()) { Velocity3D vel = actor.getVelocity(); vel.setY(vel.getY() + 5); actor.setVelocity(vel); System.out.print("Jumpしました。"); - }else{ + } else { System.out.print("地に足がついてない。"); } - System.out.print("onClick押されましたよ----------------------------------------------------"); - + System.out.print("onClick押されましたよ。"); } - public void changeViewpoint(float x,float y){ - eyeX = x; - eyeY = y; - actor.rotY(0.05 * (0.5f - eyeX) ); + public void changeViewpoint(float eyeX, float eyeY) { + actor.rotY(0.1 * (0.5f - eyeX)); + if (n <= 5 && n >= 0) { + n += (0.5f - eyeY); + } else if (n > 5) { + n = 5; + } else if (n < 0) { + n = 0; + } } public boolean onTouch(View v, MotionEvent event) { @@ -221,7 +210,6 @@ return false; } - public void logout() { con = new CharacterConnection(playerId); con.setCallBack(this); diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java index 90aa06d..9f3baca 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java @@ -1,13 +1,10 @@ package org.ntlab.radishforandroidstudio.cactusClient.views; -import android.app.Activity; import android.os.Bundle; import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; -import android.support.v7.widget.ActivityChooserView; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; @@ -29,7 +26,6 @@ import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DFragment; import org.ntlab.radishforandroidstudio.framework.model3D.BaseObject3D; 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; @@ -37,21 +33,17 @@ import org.ntlab.radishforandroidstudio.java3d.IndexedTriangleArray; import org.ntlab.radishforandroidstudio.java3d.Material; import org.ntlab.radishforandroidstudio.java3d.Point3d; -import org.ntlab.radishforandroidstudio.java3d.Vector3d; import org.ntlab.radishforandroidstudio.java3d.Vector3f; public class PlayerFragment extends RealTime3DFragment { - private OvergroundActor pocha; RWTPad pad = null; private OwnPlayer player; - private Object object; private OtherPlayerCharactersModel otherPlayerCharactersModel; private BulletsManager bulletsManager; private MovableObjectModel movableObjectModel; - private ObjectsConnection con; RWTUIFragment f = null; - private boolean isTouched = false; + private boolean isTouched = false;//画面判定 private float touchX = 0.0f; private float touchY = 0.0f; @@ -77,8 +69,7 @@ universe.placeLight(dirlight); // 地面の作成 - IndexedTriangleArray groundGeometry = new IndexedTriangleArray(4, - IndexedTriangleArray.COORDINATES | IndexedTriangleArray.NORMALS, 6); + IndexedTriangleArray groundGeometry = new IndexedTriangleArray(4, IndexedTriangleArray.COORDINATES | IndexedTriangleArray.NORMALS, 6); groundGeometry.setCoordinate(0, new Point3d(-20.0, -1.0, -20.0)); groundGeometry.setCoordinate(1, new Point3d(20.0, -1.0, -20.0)); groundGeometry.setCoordinate(2, new Point3d(20.0, -1.0, 20.0)); @@ -107,7 +98,7 @@ // プレイヤーの作成とインスタンスIDのセット String playerId = bundle.getString("playerId"); String instanceId = bundle.getString("instanceId"); - player = new OwnPlayer((Player)bundle.getSerializable("player"), getResources(), universe, camera, playerId, instanceId); + player = new OwnPlayer((Player) bundle.getSerializable("player"), getResources(), universe, camera, playerId, instanceId); modelManager.addModel(player); otherPlayerCharactersModel = new OtherPlayerCharactersModel(this, universe); @@ -118,32 +109,20 @@ bulletsManager.setPlayerId(playerId); modelManager.addModel(bulletsManager); - //objectの通信 + //object movableObjectModel = new MovableObjectModel(this, universe, instanceId); modelManager.addModel(movableObjectModel); - //画面の生成 modelManager.setInstanceId(instanceId); - + //画面の生成 initGameWindowView(); - return parentView; - } - @Override - protected void progress(long interval) { - super.progress(interval); - Button jumpButton = (Button) getActivity().findViewById(R.id.Button); - jumpButton.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - player.jump(); - } - }); parentView.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(); @@ -151,21 +130,32 @@ float minY = event.getDevice().getMotionRange(MotionEvent.AXIS_Y).getMin(); touchX = (event.getX() - minX) / (maxX - minX); touchY = (event.getY() - minY) / (maxY - minY); - player.changeViewpoint(touchX,touchY - 1 * 2); - - } else if (event.getAction() == MotionEvent.ACTION_UP) { - - touchX = 0.0f; - touchY = 0.0f; - player.changeViewpoint(touchX,touchY); + isTouched = false; } return true; } }); + return parentView; } - //sampleUiFragmentからそのまま持ってきた + @Override + protected void progress(long interval) { + super.progress(interval); + + Button jumpButton = (Button) getActivity().findViewById(R.id.Button); + jumpButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + player.jump(); + } + }); + if (isTouched) { + player.changeViewpoint(touchX, touchY); + isTouched = false; + } + } + + //画面生成 public void initGameWindowView() { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); @@ -185,7 +175,6 @@ public void logout() { player.logout(); } - @Override public void onDestroy() { System.out.println("destroy");