【发布时间】:2021-09-17 00:27:18
【问题描述】:
我正在尝试使平面跟随光标平滑移动。
这是执行此操作的代码:
void Update()
{
Vector3 mousePos = Input.mousePosition;
mousePos.z = 0;
Vector3 objectPos = Camera.main.WorldToScreenPoint(transform.position);
mousePos.x = mousePos.x - objectPos.x;
mousePos.y = mousePos.y - objectPos.y;
float angle = Mathf.Atan2(mousePos.y, mousePos.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle + rotationOffset));
Vector3 targetPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
targetPos.z = 0;
transform.position = Vector3.MoveTowards(transform.position, targetPos, speed * Time.deltaTime);
if (transform.position == targetPos)
{
Die();
}
}
public void OnCollisionEnter2D(Collision2D col)
{
Debug.Log("hit");
}
这本身运行良好,但我遇到了一个无法检测到碰撞的问题。我以前从未在运动中使用过Vector3.MoveTowards,但我猜这就是问题所在。如果有人有任何建议,将不胜感激。
【问题讨论】:
-
您检测到的确切碰撞是什么?您是否依靠“(transform.position == targetPos)”来检查它们是否发生碰撞?
-
@Armin 我检测到的碰撞是与其他 box coliders 的碰撞,
(transform.position == targetPos)在接触光标时正在破坏 obj,targetPos 是鼠标位置。 -
碰撞对你有用吗?此碰撞中的对象之一是否有
RigidBody2D?