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..7236445 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; @@ -30,13 +29,12 @@ public class OwnPlayer implements PadListener, GameBaseModel, CallBack { private boolean isPadTouched = false; + private boolean isTouched = false; private float touchPadX = 0.0f; private float touchPadY = 0.0f; + double n = 1.0; - private float eyeX = 0.0f; - private float eyeY = 0.0f; - private OvergroundActor actor; private Camera3D camera; private Player player; @@ -78,22 +76,24 @@ 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.0, 5.0 * charaVector3d.getZ()));//視点 +// camera.setViewLine(new Vector3d(-5.0 * charaVector3d.getX(), charaVector3d.getY() - 2.5 + n, -5.0 * charaVector3d.getZ()));//視線 + + 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()));//視線 + + } /** @@ -128,19 +128,19 @@ @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(); @@ -156,6 +156,11 @@ actor.setVelocity(vel); + } else if (isTouched) { +// +// actor.rotY(0.1 * (0.5f - touchX)); +// n += (0.5f-touchY); + } else { vel.setX(0.0); vel.setZ(0.0); @@ -174,7 +179,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 +202,29 @@ } - public void jump(){ - if(actor.isOnGround()) { + //jump + 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押されましたよ----------------------------------------------------"); } - 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) { 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..0b97f93 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,7 +33,6 @@ 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 { @@ -52,6 +47,7 @@ RWTUIFragment f = null; private boolean isTouched = false; + private boolean isPadTouched = false; private float touchX = 0.0f; private float touchY = 0.0f; @@ -107,7 +103,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); @@ -126,24 +122,13 @@ 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,18 +136,34 @@ 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); + isPadTouched = false; } return true; } }); + 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(); + } + }); + if (isPadTouched) { + } else if (isTouched) { + player.changeViewpoint(touchX, touchY); + isTouched = false; + } else { + + } + } //sampleUiFragmentからそのまま持ってきた