猿问

查看 2d 对撞机是否在 2 点之间

我有一个水果忍者类的游戏,你的鼠标是刀片,你可以切割水果之类的物品。所以水果有一个对撞机,刀片也有。


问题是当你快速切割时,碰撞器可能移动得太快而无法与水果发生碰撞。


为了克服这个问题,我需要一种方法来查看对撞机是否在两点之间。


我可以这样做来获得 2 分;


vector 3 lastPos = Vector3.zero;


void Update()

{

    /*If collider between Input.mouse.position & lastPos {

        collided();

    }*/

    lastPos = Input.mouse.position;

}


void collided()

{

   ...

}

这是可能的,最好的方法是什么?


牛魔王的故事
浏览 145回答 1
1回答

慕莱坞森

刀片内:private Vector3 bladeLastPos;private void Start(){&nbsp; &nbsp; bladeLastPos = new Vector3(blade.position.x,blade.position.y,blade.position.z);&nbsp;}private void Update(){&nbsp; &nbsp; Vector2 v1 = new Vector2(this.transform.position.x, this.transform.position.y);&nbsp; &nbsp; Vector2 v2 = new Vector2(bladeLastPos.x, bladeLastPos.y);&nbsp; &nbsp; float maxRange = Vector2.Distance(v1,v2);&nbsp; &nbsp; RaycastHit2D[] hits = Physics2D.RaycastAll(v1, v2 - v1, maxRange);&nbsp; &nbsp; for (int i = 0; i < hits.Length; i++)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; var component = hits[i].transform.GetComponent<ScriptNameInFruitWhereCutIs>();&nbsp; &nbsp; &nbsp; &nbsp; if (!component.cut)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Cut! use public properties/functions within component&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; bladeLastPos = new Vector3(transform.position.x,transform.position.y,transform.position.z);&nbsp;}这条线将是中心之间的一条细直线,而不是整个刀片形状留下的完整痕迹。
随时随地看视频慕课网APP
我要回答