网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月11日漏签0天
godot吧 关注:10,618贴子:44,540
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 4回复贴,共1页
<<返回godot吧
>0< 加载中...

请教如何对sprite的范围进行有条件的限制(触摸模拟游戏)

  • 只看楼主
  • 收藏

  • 回复
  • 超期待更新
  • godot
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
如何实现这样的效果:
游戏画面中有一个区域area2D (圆形或胶囊形)
一个sprite跟随鼠标
鼠标左键未按下时sprite始终跟随鼠标
难点::::::::当鼠标左键在area2d内按下时,让精灵动画被限制在area2d内部,且当鼠标位置也在area2d内部时
,animateSprite位置=鼠标位置,
但当鼠标在area2d内部按下且不松开的情况下滑动到area2d外部,且此时使animatedSprite实时处在area2d内部最接近鼠标的位置上
难点1:怎样让sprite在一定条件下被限制在area2d里?
我目前的烂解决方法:给sprite建一个父节点rigidbody2d,然后在area2d外面手动画一个近似空心园的空心多边形
但这样的问题就是鼠标速度快时会导致rigidbody2d有时会"穿透"area2d外面这个空心多边形
难点2:怎样让鼠标在按下并移出 area2d时,让sprite实时处在area2d内部离鼠标最近的点上
我目前的烂解决办法:因为难点1是用的rigidbody2d解决的,所以这里我是用给rigidbody2d一个指向鼠标position的线速度来实现的,但是缺点也很明显,就是rigidbody2d始终滞后鼠标的运动,不能实时瞬间移动到最接近鼠标位置的位置上
各位大佬帮帮忙吧


  • 人类的大敌
  • 吧主
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
确实是难度很高的问题,这个可是要很强的大佬才能解决的,我先来说说我的思路吧:首先是比较简单的形状,比如圆形或者方形,都是可以直接用数学算法来解决的,如图所示,下图是动态图,手机贴吧需要点击查看:
图中可以看到,方形和圆形的算法都很简单,方形只需要判断每个边的坐标是否大于范围的坐标就行了,而圆形只需要判断圆心到半径的长度就行了。上图两个只需要数学计算,不用Area2D就能实现……
……但是
如果是复杂的形状,比如多边形范围,比如1楼提到的胶囊形,就很麻烦了。目前我在api里也没有翻到判断一个形状在另一个形状范围内的方法,
目前个人推测只有两个方面的大佬可以解决这个问题:
1、如果有数学大佬,或许可以提供判断在多边形内部的算法
2、如果有对api很熟悉的大佬,或许可以在api里翻到可调用的函数


2026-04-11 11:08:24
广告
不感兴趣
开通SVIP免广告
  • 贴吧用户_7EG5U2y
  • GDScript
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
其实不难,简单图形就像吧主那样做就好。复杂图形,比如多边形,也只需要中学的平面几何知识,遍历每一条边到鼠标的最近线段长度获得最短的那条就能得到坐标点了(点到线段的最短距离公式)。曲线图就用采用当成多边形处理。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 4回复贴,共1页
<<返回godot吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示