2014-12-22 44 views
0

当我在位置拍摄时,角色从子弹开始朝向正确的方向。但是如果我移动到不同的位置,子弹不会朝正确的方向行进。 澄清事情mx是鼠标x位置,我是鼠标y位置,px是玩家x位置,py是玩家y位置。lwjgl/java移动时在鼠标方向拍摄

package Player; 

import java.io.IOException; 
import org.lwjgl.input.Mouse; 
import org.lwjgl.opengl.GL11; 
import org.newdawn.slick.Color; 
import org.newdawn.slick.opengl.Texture; 
import org.newdawn.slick.opengl.TextureLoader; 
import org.newdawn.slick.util.ResourceLoader; 

import Game.Main; 

public class Bullet { 
public double x = 0, y = 0; 
public double sx, sy; 
public Texture texture; 

public Bullet(double mx, double my, double px, double py){ 
    sx = mx-px; 
    sy = py-my; 
    x = px; 
    y = py; 
    sx = sx/Math.sqrt((mx-x)*(mx-x) + (my-y)*(my-y)); 
    sy = sy/Math.sqrt((mx-x)*(mx-x) + (my-y)*(my-y)); 



} 
public void logic(){ 
    renderBullet(); 

    x+=sx * 8; 
    y+=sy * 8; 






} 

public void renderBullet(){ 
    try { 
     texture = TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/image.png")); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    Color.white.bind(); 
    texture.bind(); // or GL11.glBind(texture.getTextureID()); 
     GL11.glBegin(GL11.GL_QUADS); 

     GL11.glTexCoord2f(0,0); 
     GL11.glVertex2d(x,y); 
     GL11.glTexCoord2f(1,0); 
     GL11.glVertex2d(10+x,y); 
     GL11.glTexCoord2f(1,1); 
     GL11.glVertex2d(10+x,10+y); 
     GL11.glTexCoord2f(0,1); 
     GL11.glVertex2d(x,10+y); 

    GL11.glEnd(); 
} 

}

+0

这是什么类型的游戏? 2D从上面看?玩家是否总是在屏幕上居中? mx,my,px,py是否在屏幕上显示所有像素坐标?随着你提供的小信息,没有人可以回答这个问题... – BDL

+0

这是从上面的游戏的2D视图。角色并不总是居中在屏幕上。 Mx,my,px,py都是游戏中的职位。 – Max

+0

@BDL我忘了太@ @ thingy。 – Max

回答

0

出于某种原因而在启动不同的位置,你必须用-1乘以SX和SY方程。

public Bullet(double mx, double my, double px, double py){ 
    if(x==640 && y== 320){ 
    sx = mx-px; 
    sy = py-my; 
    x = px; 
    y = py; 
    sx = sx/Math.sqrt((mx-x)*(mx-x) + (my-y)*(my-y)); 
    sy = sy/Math.sqrt((mx-x)*(mx-x) + (my-y)*(my-y)); 

} 
    if(x!=640 && y!= 320){ 
    sx = px-mx; 
    sy = my-py; 
    x = px; 
    y = py; 
    sx = sx/Math.sqrt((mx-x)*(mx-x) + (my-y)*(my-y)); 
    sy = sy/Math.sqrt((mx-x)*(mx-x) + (my-y)*(my-y)); 

} 

}