设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

如何让图片始终指向鼠标位置的问题

查看数: 5902 | 评论数: 25 | 收藏 3
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-12-25 14:04

正文摘要:

我想做一个ARPG小游戏,在玩家身上有一张指针的图片始终指向鼠标的方向,但是这个问题困扰了我很久,用了Drill_up大佬翻译与制作的插件,我知道可以让图片一直跟随在玩家身上,也知道了使用脚本可以让图片旋转到某个 ...

回复

白嫩白嫩的 发表于 2020-1-5 23:26:48
yanzhllwc 发表于 2020-1-1 21:46
现在是这样的状态,我只能用事件来做,代码不会用,其实是8方向的箭头,由于那个像素必须要玩家X和鼠标X或Y ...

顺便问下楼主怎么实现例图中角色只有左右没有上下动作图的?

点评

哦哦 这样也可以 哈哈 期待你的试玩版早点出来  发表于 2020-1-7 03:31
也不能禁用呢,因为我想的是进到屋子里就有上下了,只有战斗的时候会没有上下,嘛,我是觉得问题不大吧,哈哈哈  发表于 2020-1-6 18:13
哈哈,要不研究下我之前楼层里面的根据鼠标决定朝向那个插件吧  发表于 2020-1-6 12:57
没错、、、确实会这样、、、不过我无视了、、、、、哈哈哈  发表于 2020-1-6 00:26
那总会有一个方向是错误的啊,比如上用的左,如果角色当前朝右方,只按上的话突然转方向了。。。  发表于 2020-1-6 00:18
yanzhllwc 发表于 2020-1-1 21:21:07
在野月光族 发表于 2019-12-31 01:38
瞎猜一下,可能是长这样子的。

月光大大,其实我自己发的18楼那个代码就是全部了,并没有上下文、、、不知道是哪里错了,大大提到的rotation值,请问是什么呢?

点评

emmm、、其实不是很懂,不过感觉就进一步了,非常感谢大大  发表于 2020-1-1 23:04
你代码中的$gamePlayer._realX提取的是格子坐标,要跟鼠标坐标进行比较的话,还需先乘以48像素  发表于 2020-1-1 22:39
看了下gameScreen原来内置了自动更新弧度。那么你代码写到gameScreen的update里应该就可以动起来了。  发表于 2020-1-1 22:38
yanzhllwc 发表于 2020-1-1 21:13:14
哇~谢谢各位大大了!容我研究一下下!!
play337 发表于 2019-12-31 17:05:22
下面這個官方插件 可以做到 月光大的功能
不過 他只可以 4個方向轉而已
就是無法像 下面這兩個一樣 可以 全方向.... 而且跟很多插件衝突....

01.本來找到GLV的MV Map Projectiles,但是相當難設定..
https://galvs-scripts.com/2016/09/13/mv-map-projectiles/

02. 日本人做的這個 看起來很厲害...不過也是很難設定
https://tm.lucky-duet.com/viewtopic.php?t=7121
https://game.nicovideo.jp/atsumaru/games/gm9334

-----------------------------------
//=============================================================================
// PlayerPointerTurn.js
// ----------------------------------------------------------------------------
// Copyright (c) 2015 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.1.0 2018/02/10 PD_8DirDash.js?券€????游????孵??怠紋敹????賬?餈賢??????
// 1.0.0 2016/02/23 ??
// ----------------------------------------------------------------------------
// [Blog]   : https://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================

/*:
* @plugindesc ??喋餈質楚??啜??
* @author ??U?喋??
*
* @help 蝘餃??航?芸???扎?潦?
* ??嫘??扎?踴?嫘????整???
*
* ???啜?喋?胯??押?扎?喋??喋??胯??????
*
* ?拍閬?嚗?
*  雿€?⊥?扳憭€?????賬??典耦?????8蝳?函?嚗?
*  ?怒??????整??€?
*  ???啜?喋??????扼???
*/
(function() {

    var isExistPlugin = function(pluginName) {
        return PluginManager._parameters.hasOwnProperty([pluginName.toLowerCase()]);
    };

    //=============================================================================
    // Game_Player
    //  ??喋?格????
    //=============================================================================
    var _Game_Player_moveByInput      = Game_Player.prototype.moveByInput;
    Game_Player.prototype.moveByInput = function() {
        if (!this.isMoving() && this.canMove() && TouchInput.isMoved()) {
            this.turnToPointer();
        }
        _Game_Player_moveByInput.apply(this, arguments);
    };

    Game_Player._8dirTable = [6, 9, 8, 7, 4, 1, 2, 3, 6];
    Game_Player.prototype.turnToPointer = function() {
        var tx = TouchInput.x, ty = TouchInput.y, sx = this.screenX(), sy = this.screenY();
        var dir;
        if (isExistPlugin('PD_8DirDash') && this._characterName.indexOf('Q') !== -1) {
            var degree = (Math.atan2(ty - sy, -(tx - sx)) / Math.PI + 1) / 2 * 8;
            dir        = Game_Player._8dirTable[Math.round(degree)];
        } else {
            dir = Math.abs(tx - sx) > Math.abs(ty - sy) ? (tx > sx ? 6 : 4) : (ty > sy ? 2 : 8);
        }
        this.setDirection(dir);
    };

    //=============================================================================
    // TouchInput
    //  ??喋?桐?蝵柴?撣詻閮
    //=============================================================================
    TouchInput._onMouseMove = function(event) {
        var x = Graphics.pageToCanvasX(event.pageX);
        var y = Graphics.pageToCanvasY(event.pageY);
        this._onMove(x, y);
    };
})();

点评

谢谢大大帮忙寻找插件!!  发表于 2020-1-1 21:48
在野月光族 发表于 2019-12-31 01:38:12
瞎猜一下,可能是长这样子的。

点评

感谢月光大佬解惑,容我等在研究研究,哈哈  发表于 2019-12-31 23:15
MV内置的是A-Start寻路算法,这算法更适合落点到大格子,也就是4方向、8方向这样。如果像楼下说的像素点移动,感觉MV很吃力了。  发表于 2019-12-31 21:10
至于角度的计算,简书上有关于Math.atan2的算法介绍,这里就不赘述了。箭头原地转感觉还是可以实现的,不过让人物跟随箭头走还得依赖寻路吧。  发表于 2019-12-31 21:07
楼主的方法由于没有给出上下文,所以不好评论。不过看代码写到了角度但没赋值弧度rotation的值,第一眼的感觉就是游戏画面应该会没反应。  发表于 2019-12-31 21:02
上图只是将事件显示名称改成显示箭头,毕竟MV有内置的方向计算方法,调用一下而已。不过如果要改成楼下那样的像素点移动,估计得重写寻路  发表于 2019-12-31 21:00

评分

参与人数 1+1 收起 理由
白嫩白嫩的 + 1 精品文章

查看全部评分

yanzhllwc 发表于 2019-12-29 02:49:37
本帖最后由 yanzhllwc 于 2019-12-29 02:59 编辑

由于不会程序,所以尝试了很多写法,总之是不成功,最后决定把里面的内容简单化,写成了下面的样子:

(function () {
       
        var _TouchInput__onMouseMove = TouchInput._onMouseMove;
    TouchInput._onMouseMove = function(event) {
        _TouchInput__onMouseMove.apply(this, arguments);
        this.mouseX = Graphics.pageToCanvasX(event.pageX);
        this.mouseY = Graphics.pageToCanvasY(event.pageY);
    };
       
        var px = $gamePlayer._realX;
        var py = $gamePlayer._realY;
        var mx = TouchInput.mouseX;
        var my = TouchInput.mouseY;
        var targetShuttle = 0;
       
        if(px <= mx) {
                if (py >= my) {
                        targetShuttle = 45;
                } else {
                        targetShuttle = 135;
                }
        } else {
                if (py >= my) {
                        targetShuttle = 315;
                } else {
                        targetShuttle = 225;
                }
        };
       
        $gameScreen.picture(5)._angle = targetShuttle;
       
})();

存了一个js放在了插件目录并在游戏中开启,自我感觉是先定义了鼠标的移动时XY坐标,之后用px,py,mx,my分别代表玩家XY坐标和鼠标XY坐标,引用 芯☆淡茹水 大佬的区域判断,让那个5号图片的角度值呈现45,135,225,315的变化,可是这样都不成功,那张图片完全没有变化、、不知道有没有大佬能帮我看看是什么小白问题导致了不成功、、、、、

点评

喽主加油! 好期待你成功的那一天~  发表于 2019-12-29 10:33

评分

参与人数 1+1 收起 理由
白嫩白嫩的 + 1 加油,期待楼主早点成功!!!.

查看全部评分

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-26 09:28

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表