Move Camera with Mouse

Status
Not open for further replies.

Scheikowski

Villager
Member
Joined
Apr 11, 2018
Messages
13
Reaction score
1
First Language
Turkish
Primarily Uses
RMMV
I've already searched for it but i couldn't find any script. What I'm looking for is move the camera with mouse like in all strategy games. If player brings mouse cursor to right border of the screen then camera moves to the right. If up then camera moves to the up.
 

Magnus0808

Software Developer
Veteran
Joined
Feb 2, 2019
Messages
149
Reaction score
173
First Language
Danish
Primarily Uses
RMMV
I made this plugin for you :)
I added some parameters so you can choose how close the mouse should be by the border in order to move the camera and at which speed.
I also added a option for if you want the camera to always show the player when they are moving.

You can also use a plugin command to turn of/on the plugin: CameraMouseMove On/Off/Toggle

Code:
//=============================================================================
// Camera Mouse Move
// MRP_CameraMouseMove.js
// By Magnus0808 || Magnus Rubin Peterson
//=============================================================================
/*:
 * @plugindesc Camera moves when the mouse is at edge of screen.
 * @author Magnus0808
 *
 * @help Plug and play for default settings.
 * The following plugin command can be used to turn off/on the plugin:
 * CameraMouseMove On/Off/Toggle (depending on what you want)
 *
 * @param Border Distance
 * @type Number
 * @desc The distance the mouse should be from the border to move the camera.
 * @default 50
 *
 * @param Move Speed
 * @type Number
 * @decimals 2
 * @desc The speed the camera will move with when the mouse is by the border.
 * @default 0.10
 *
 * @param Always Show Player Move
 * @type Boolean
 * @desc If true then when the player moves the camera will always show it.
 * @default true
*/

(function(){
    var CameraMouseMove = {};
    CameraMouseMove.Parameters = PluginManager.parameters('MRP_CameraMouseMove');
    CameraMouseMove.on = true;
    CameraMouseMove.borderDistance = Number(CameraMouseMove.Parameters['Border Distance']);
    CameraMouseMove.moveSpeed = Number(CameraMouseMove.Parameters['Move Speed']);
    CameraMouseMove.playerCenter = (String(CameraMouseMove.Parameters['Always Show Player Move']) == 'true');
    
    var MRP_CMM_GI_PLUGINCOMMAND_OLD = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        MRP_CMM_GI_PLUGINCOMMAND_OLD.call(this, command, args)
        
        if (command === 'CameraMouseMove'){
            switch(args[0].toLowerCase()){
                case "on":
                    CameraMouseMove.on = true;
                    break;
                case "off":
                    CameraMouseMove.on = false;
                    break;
                case "toggle":
                    CameraMouseMove.on = !CameraMouseMove.on;
                    break;
            }
        }
    };
    
    var MRP_CMM_GM_UPDATE_OLD = Game_Map.prototype.update;
    Game_Map.prototype.update = function(sceneActive) {
        MRP_CMM_GM_UPDATE_OLD.call(this, sceneActive);
        this.updateCamera();
    };
    
    Game_Map.prototype.updateCamera = function(){
        if(CameraMouseMove.on) {
            var mouseX = TouchInput._mouseX;
            var mouseY = TouchInput._mouseY;
            
            if(mouseX < CameraMouseMove.borderDistance) this.scrollLeft(CameraMouseMove.moveSpeed);
            if(mouseY < CameraMouseMove.borderDistance) this.scrollUp(CameraMouseMove.moveSpeed);
            if(mouseX > Graphics.boxWidth - CameraMouseMove.borderDistance) this.scrollRight(CameraMouseMove.moveSpeed);
            if(mouseY > Graphics.boxHeight - CameraMouseMove.borderDistance) this.scrollDown(CameraMouseMove.moveSpeed);
        }   
    }
    
    var MRP_CMM_GP_UPDATESCROLL_OLD = Game_Player.prototype.updateScroll;
    Game_Player.prototype.updateScroll = function(lastScrolledX, lastScrolledY) {
        MRP_CMM_GP_UPDATESCROLL_OLD.call(this, lastScrolledX, lastScrolledY);   
        if(CameraMouseMove.playerCenter && this.isMoving()){
            if(this._realX + 1 < $gameMap._displayX) {
                $gameMap.scrollLeft($gameMap._displayX + this.centerX() - this._realX);
            }
            if(this._realX - 1 > $gameMap._displayX + this.centerX() * 2) {
                $gameMap.scrollRight(this._realX - $gameMap._displayX + this.centerX() * 2);
            }
            if(this._realY + 1 < $gameMap._displayY) {
                $gameMap.scrollUp($gameMap._displayY + this.centerY() - this._realY);
            }
            if(this._realY -1 > $gameMap._displayY + this.centerY() * 2) {
                $gameMap.scrollDown(this._realY - $gameMap._displayY + this.centerY() * 2);
            }   
        }
        
    };
    
    var MRP_CMM_TI_ONMOUSEMOVE = TouchInput._onMouseMove;
    TouchInput._onMouseMove = function(event) {
        MRP_CMM_TI_ONMOUSEMOVE.call(this, event);
        this._mouseX = Graphics.pageToCanvasX(event.pageX);
        this._mouseY = Graphics.pageToCanvasY(event.pageY);
    };
    
})();
 

Attachments

  • MRP_CameraMouseMove.js
    3.8 KB · Views: 65

Scheikowski

Villager
Member
Joined
Apr 11, 2018
Messages
13
Reaction score
1
First Language
Turkish
Primarily Uses
RMMV
Thanks a lot Magnus0808. This is exactly what I want!
 

Zack Phoenix

Artist
Veteran
Joined
Jun 12, 2013
Messages
187
Reaction score
26
First Language
German
Primarily Uses
RMMV
This is gonna be essential for any game using one of the tactical combat plugins! And just super useful all around. Thanks!
 

Sunjean

Veteran
Veteran
Joined
Oct 18, 2019
Messages
61
Reaction score
23
First Language
Norvegian
Primarily Uses
RMMV
Just what I was looking for!
Tested it just now, and it works like a charm :) Found move speed 0.20 to be perfect.

Thank you Magnus0808.
 

slimmmeiske2

Little Red Riding Hood
Global Mod
Joined
Sep 6, 2012
Messages
8,034
Reaction score
5,335
First Language
Dutch
Primarily Uses
RMXP

sunjean, please refrain from necro-posting in a thread. Necro-posting is posting in a thread that has not had posting activity in over 30 days. You can review our forum rules here. Thank you.

 
Status
Not open for further replies.

Latest Threads

Latest Posts

Latest Profile Posts

What Reviews say on RPG Maker MZ?
Looking back at some sketches, and game design documents on my PC dated summer of 2015. I started development with the release of MZ, but in 2015, I felt a strong desire to make a game out of the blue. I remember feeling sad for no apparent reason, and all these ideas rushed into my head. Now that I think about it, since that day, everything has become easier to do on my PC . . . it’s very creepy.
Everything's going to be alright! We're all in this together. <3
Aaaaannd published my game's tech demo. :D

Feel free to download and play it. And give feedback!
Hey everyone, we know that the edit bar is missing. We're working on it. You can talk about it in the announcement here: https://forums.rpgmakerweb.com/index.php?threads/forum-errors-missing-edit-bar-etc.132715/

Forum statistics

Threads
107,801
Messages
1,032,297
Members
139,943
Latest member
Tresh367
Top