| further reading | more topics » |
| mjbWorld program | 3D theory |
3D physics |
3D maths |
3D programming | technology |
about site |
sitemap A-Z |
| index | language | dev tools | games | structure | platforms | OOAD | information |
| index | setup | 2d | 3d |
| index | dx9vb | dx9C# | OpenGL C++ |
| index | introduction | first | shapes | 3D | rotation | textures | camera |
| keyboard | moving |
|
This tutorial was written for me by Imran Khan (imranahmedkhan82@hotmail.com,
iak1982@yahoo.com). |
|||||||
|
Keyboard & Mouse Interaction: In this Section we will learn that how we can use Keyboard and Mouse to interact with the Program. This is one the main and most important thing of any Game. Actually we won't move in a 3D-World , we will use Camera to move around. As we have learned that how to initialize Camera Posisition. Now we will move this camera around on keyboard press and on mouse movement. First of all we will define a constant name 'cameraspeed '. Which is use to set the speed of the Camera.
First of all we will define a method ' Move_Camera ' . Which will use to move the camera forward and backward.
First get the View vector by subtracting the Position vector from View vector. Next we just add the values to x and z of Position and View Vector because we want to move only forward and backward. Now we will define a method 'Rotate_View' method. Which is use to move the Camera View left and right.
First get the View vector by subtracting the Position vector from View vector. Then we apply the formula for the rotation. We do this only to View Vector because we don't want to move the Camera, we just want to rotate the View. Camera is still at its position. Now we will define a method for Keyboard_Input.. We can also write these lines of code in "WinMain" but it will look complex thats why we will write its seperate method. So that it will more clear and simple to understand. Then we will easly call this function from "WinMain" .
For 'up' and ' Down ' Key we call " Move_Camera " and for ' left ' and ' right ' Key , we will call " Rotate_View ". Next we will just call this function from " WinMain " method...
This is not the full function, but just that part of the code in which we are calling the " KeyBoard_input " method. Now when u run the program you can move " Forward " & " Backword " . You can Turn Arround. But you can't see up and down. We will do this with Mouse. Now we will define the funtion " Mouse_Move " as we did for Keyboard_input.
First we get the the center of the window from these lines : int mid_x = wndWidth >> 1; Next we set the Get the Current Cursor Position and then Set the Current Cursor Position to the Center of the screen, Which we have set. Then we get the direction from the mouse cursor and set a resonable speed. angle_y = (float)( (mid_x - mousePos.x)
) / 1000; The we apply certain limit to the rotation around the x-axis. if((mView.y - mPos.y) > 8) mView.y
= mPos.y + 8; and in the end we call Rotate_view Method to rotate the View. As we have done all the things , we just have to call this "Mouse_Move" Fucntion.
Now you have Full Command , You can look around, move around... Enjoy !
|
|
metadata block
|
|
| see also: |
|
| Correspondence about this page | |
|
Book Shop - Further reading. Where I can, I have put links to Amazon for books that are relevant to the subject, click on the appropriate country flag to get more details of the book or to buy it from them. |
|
|
Commercial Software Shop Where I can, I have put links to Amazon for commercial software, not directly related to this site, but related to the subject being discussed, click on the appropriate country flag to get more details of the software or to buy it from them. |
|
|
Can this page be improved? Please send me any improvements to here. I would appreciate ideas to make the pages more useful including error correction, ideas for new pages, improvements to wording. It helps if you quote the full URL of the page. |
|
|
progam I am working on a project which uses these principles, if you would like to help me with this you are welcome to join in, here: |
for kdgame programming: http://sourceforge.net/projects/kdgame/ |
This site may have errors. Don't use for critical systems.
Copyright (c) 1998-2008 Martin John Baker - All rights reserved - privacy policy.