【问题标题】:Drag and drop - how to freeze the hit object?拖放 - 如何冻结命中的对象?
【发布时间】:2018-01-13 15:47:28
【问题描述】:

我有 2 个对象 - 一个球体和一个立方体。当我拖动球体并用它击中立方体时,立方体正在飞走。即使被另一个(拖动的)对象击中,如何使被击中的对象保持在同一位置?当我检查刚体中的约束-冻结位置时,球体刚刚穿过立方体。

这是我用来拖放的代码(两个对象都附加了该脚本+刚体):

     private bool dragging = false;
 private float distance;

 void OnMouseDown()
 {
     distance = Vector3.Distance(transform.position, Camera.main.transform.position);
     dragging = true;
 }

 void OnMouseUp()
 {
     dragging = false;
 }

 void Update()
 {
     if (dragging)
     {
         Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
         Vector3 rayPoint = ray.GetPoint(distance);
         transform.position = rayPoint;
     }
 }

【问题讨论】:

  • Rigidbody 是否附加到您正在拖动的这个 Object 上?
  • 如前所述,两个对象都附加了刚体

标签: c# unity3d drag-and-drop


【解决方案1】:

在您想要固定的游戏对象的刚体上启用运动学复选框。

【讨论】:

  • 这个也试过了,还是通过
  • 请提供一些屏幕,因为这是不可能的
  • imgur.com/YYAz0Zj 如果 Is Kinematic 被禁用,立方体会被球体推动,如果它被启用,它会通过,但如果我像在立方体内一样将它放下,它会从立方体中跳出来跨度>
  • 你测试过onCollisionEnter方法来调试吗?
  • 我试过 `void OnCollisionEnter(Collision collision) { GameObject otherObj = collision.gameObject; Debug.Log("碰撞:" + otherObj); }` 我得到“碰撞:Cube (UnityEngine.GameObject) UnityEngine.Debug:Log(Object)”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多