目标效果:制作潜艇大战时,需要player(海平面上的舰只)根据鼠标点击的位置沿海平面(横版游戏,海平面为y轴)移动
分析:player移动时,其在x轴方向的位置固定不变,侦听鼠标y轴坐标的位置移动
制作:在背景图片上设置鼠标点击事件,产生移动效果,考虑用Moveto来实现:MoveTo("player", SW_X_PlayerPosition, ymouse, 2, "Game Center", "");
// SW_X_PlayerPosition:player的X轴位置;
// ymouse:鼠标的y轴位置;
// 2:移动速度。
遇到的问题:player只能沿海平面的中点往下移动
调试:创建一个text对象,用sprinf来获取坐标信息,查看ymouse的坐标位置,发现ymouse的值从0-480,而player的y轴取值从-240 - 240,因此直接使用这个值就会产生上述问题。
解决:
修正ymouse的y轴坐标原点,使其与GameCenter的原点一致:ymouse - 240
MoveTo("player", SW_X_PlayerPosition, ymouse - view.height / 2, 2, "Game Center", "");
问题解决。
结论:
ymouse的坐标系是以屏幕左上角顶点为原点,而view的坐标系是以屏幕中心为原点。
转载于:https://www.cnblogs.com/mcgame/archive/2013/05/20/3089046.html