Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (480)
Games in Android Showcase (110)
games submitted by our members
Games in WIP (547)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Isometric plane centering?  (Read 633 times)
0 Members and 1 Guest are viewing this topic.
Offline SkyAphid
« Posted 2012-05-27 10:29:33 »

I hate to always spam this place, but most of my questions can't be answered by Google; as I'm always led to seemingly the opposite of what I need.

Anyway, here's my code for moving around isometrically; please do note that this is my first time fooling around with it, so excuse amateur mistakes. Hahah.

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
   public void update(){
      dv.setCamX(x - (Display.getWidth()/2));
      dv.setCamY(y - (Display.getHeight()/2));
     
      updateControlledMovement();
   }
   
   public void updateControlledMovement(){
      int newX = x;
      int newY = y;
     
      //Straights
     if (Keyboard.isKeyDown(Keyboard.KEY_D)){newX = x + speed/2; newY = y - speed/2;}
      if (Keyboard.isKeyDown(Keyboard.KEY_A)){newX = x - speed/2; newY = y + speed/2;}
      if (Keyboard.isKeyDown(Keyboard.KEY_W)){newY = y - speed; newX = x - speed;}
      if (Keyboard.isKeyDown(Keyboard.KEY_S)){newY = y + speed; newX = x + speed;}
     
      //Diagonals
     if (Keyboard.isKeyDown(Keyboard.KEY_W) && Keyboard.isKeyDown(Keyboard.KEY_D)){
         newY = y - speed;
         newX = x;
      }
     
      if (Keyboard.isKeyDown(Keyboard.KEY_S) && Keyboard.isKeyDown(Keyboard.KEY_D)){
         newY = y;
         newX = x + speed;
      }
     
      if (Keyboard.isKeyDown(Keyboard.KEY_W) && Keyboard.isKeyDown(Keyboard.KEY_A)){
         newY = y;
         newX = x - speed;
      }
     
      if (Keyboard.isKeyDown(Keyboard.KEY_S) && Keyboard.isKeyDown(Keyboard.KEY_A)){
         newY = y + speed;
         newX = x;
      }
     
      //Collision check
     
      x = newX;
      y = newY;
   }


Here's the deal, these lines have a strange effect on the screen:

1  
2  
dv.setCamX(x - (Display.getWidth()/2));
dv.setCamY(y - (Display.getHeight()/2));


They don't like they should, and from what I've read in a few different threads, this function should work the same orthographically and isometrically. What should I change it too? I can't really wrap my head around it, although I've had a few far-fetched ideas that are related to the radii of circles. lol.

Any feedback is appreciated, and critique on the above movement code is acceptable as well. :p

“Life is pretty simple: You do some stuff. Most fails. Some works. You do more of what works. If it works big, others quickly copy it. Then you do something else. The trick is the doing something else.” ~Leonardo da Vinci
Offline UprightPath
« Reply #1 - Posted 2012-05-27 11:23:16 »

Ah-hah!

I'm assuming that you mean an Isometric-45 or something like that (Diamonds instead of squares). If that's the case it's a very simple issue.

Movement does not occur in just one 'direction' in that case. Moving 'up' will also move you to either the left or the right moving 'down' will move you down and in the opposite X direction as up. This mean that you'll need some form of translation from your 'square' to a 'diamond'. So...

1  
2  
      dv.setCamX((y - x) + (Display.getWidth()/2));
      dv.setCamY((x + y)- (Display.getHeight()/2));


Something like this should work.

Offline SkyAphid
« Reply #2 - Posted 2012-05-27 12:45:34 »

Ah-hah!

I'm assuming that you mean an Isometric-45 or something like that (Diamonds instead of squares). If that's the case it's a very simple issue.

Movement does not occur in just one 'direction' in that case. Moving 'up' will also move you to either the left or the right moving 'down' will move you down and in the opposite X direction as up. This mean that you'll need some form of translation from your 'square' to a 'diamond'. So...

1  
2  
      dv.setCamX((y - x) + (Display.getWidth()/2));
      dv.setCamY((x + y)- (Display.getHeight()/2));


Something like this should work.

It's kind of funny, because I actually tried that when I was messing around, but instead of y-x and x + y, it was x + y and x - y. So close Tongue

Anyway, thanks for the input. I'll try it.

“Life is pretty simple: You do some stuff. Most fails. Some works. You do more of what works. If it works big, others quickly copy it. Then you do something else. The trick is the doing something else.” ~Leonardo da Vinci
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

atombrot (23 views)
2014-08-19 09:29:53

Tekkerue (22 views)
2014-08-16 06:45:27

Tekkerue (21 views)
2014-08-16 06:22:17

Tekkerue (12 views)
2014-08-16 06:20:21

Tekkerue (19 views)
2014-08-16 06:12:11

Rayexar (57 views)
2014-08-11 02:49:23

BurntPizza (37 views)
2014-08-09 21:09:32

BurntPizza (29 views)
2014-08-08 02:01:56

Norakomi (36 views)
2014-08-06 19:49:38

BurntPizza (66 views)
2014-08-03 02:57:17
List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06

List of Learning Resources
by SilverTiger
2014-07-31 11:54:12

HotSpot Options
by dleskov
2014-07-08 01:59:08
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!