[计算机] Unity2D判断视野问题(完成任务向)

查看:805 |回复:1 | 2019-12-24 10:53:45

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 胖纸_DHW 于 2019-12-24 16:18 编辑

Unity2D鼠标控制Spirte移动


在使用Unity制作2D游戏时,常用的对于游戏物体的操作一般有需要游戏对象跟随鼠标的移动,例如:
弹球消方块游戏,飞机大战等,需要鼠标来控制游戏对象。

Unity2D使用Spirte,游戏对象跟随鼠标移动,需要获取鼠标位置与物体的位置,因为是2D游戏,需要对
鼠标的屏幕坐标转换为世界坐标,不转换坐标会造成一些问题,如当玩家对屏幕操作时,获取的鼠标的位置
不在当前的屏幕所在的平面位置,而在某一点,这个点需要在三维空间里寻找。

首先需要先将鼠标转换从屏幕坐标中转化为世界坐标

Vector3 mousePosistion = Camera.main.ScreenToWorldPoint(Input.mousePosition + new Vector3(0,0,10));
//其中最重要的是后面的    new Vector3(0,0,10)

可能有些人不明白,为什么要添加后面的new Vector3(0,0,10),在2D游戏中,屏幕只有X与Y轴,但是屏幕的图像
是用摄像机进行投影的。摄象机处于一个三维的空间,而我们的屏幕处于的是一个二维的空间,图一和图二为摄象机的位置
参数,图三为当前平面的位置,屏幕位置转化为世界坐标是通过摄像机来确定的,若不加后面的new Vector3(0,0,10),鼠标
获取的世界坐标就变为在屏幕的后面,所以需要补全这z轴的位置,使得鼠标的点能够落在真正的屏幕上。
image.png image.png



第二步是转化游戏对象位置为鼠标的位置

//将鼠标的屏幕位置转换成世界坐标
        Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition + new Vector3(0,0,10));
        //将游戏对象的坐标设置为鼠标坐标
       Vector3 GamePosition = mousePosition;
       //添加刚体组件
       GetComponent<Rigidbody2D>().MovePosition(hatPosition);

————————————————
版权声明:本文为CSDN博主「Trigger·」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42094756/article/details/89165068

584_2019111564603603.jpg

评分

参与人数 1活跃度 +9 展开 理由
微凉. + 9 【给力】阅贴无数,楼主最强!

查看全部评分

2019-12-24 10:53:45  
 赞 赞 0

使用道具 登录

1个回答,把该问题分享到群,邀请大神一起回答。
2#
回复 收起回复
2023-2-25 11:58:07   回复
 赞 赞 0

使用道具 登录

CG 游戏行业专业问题

图文教程技术文章技术文库程序逻辑
显示全部 8
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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