拉緹娜 2021-06-25 12:07 采纳率: 50%
浏览 840
已结题

Unity3D拼装积木的吸附功能

每个台阶(零件)都有多个碰撞体,所有碰撞体勾选触发器,除了紫色台阶(下称A)外,正常台阶(下称B)另有鼠标拖动的相关代码和刚体。

想要达到B接近A时产生的一个吸附效果,我想到的方案是if判断AB两者的中心坐标,当两者中心坐标值相差不大时,B的坐标值变更为A的坐标值,然后再将A销毁。

//此段代码在鼠标拖动的脚本内
void OnTriggerStay(Collider collider)
    {
        if (gameObject.tag == collider.gameObject.tag)
        {
            if((transform.position - collider.transform.position).sqrMagnitude < 1)
            {
                dragged = false;//false时,关闭鼠标拖动的功能
                this.gameObject.transform.position = collider.gameObject.transform.position;
                //transform.position = Vector3.MoveTowards(transform.position, collider.gameObject.transform.position, Time.deltaTime);
                //yield return new WaitForSeconds(1.0f);
                Destroy(collider.gameObject);
            }
        }
    }

然而在使用时.B一旦和A产生接触,A很快就进行了销毁,但是B停留在原地并没有移动到A的位置上。改用MoveToWards和协程延时仍旧如此。

失效的原因是什么?如何更改?又或者有没有其他好的实现吸附效果的设计?

  • 写回答

4条回答 默认 最新

  • Kscstg 2021-06-25 13:15
    关注

    你把碰撞体编辑的很小再试试呢

    评论

报告相同问题?

悬赏问题

  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计