如何解决在 Unity 中击中对象时如何停止光线投射?
在我的 Unity 游戏(自上而下的 2D 射击游戏)中,有一些敌人沿着一条路径飞行(通过 DOTween)。我的玩家将光线投射到场景中,以便在玩家面前获得一个敌人对象。到目前为止一切顺利。
现在的问题是我只想要一个敌人对象,即光线投射在第一次击中敌人对象时应该停止。我如何实现这一目标?
我只需要一个被光线投射击中的敌人对象,因为我的游戏中有一个十字准线,当光线投射开始并且敌人沿着路径飞行时,十字准线来回跳跃(我不想要这个 -十字准线应该停留在光线投射命中的第一个敌人处)。
这是我的代码(附在播放器上):
void FixedUpdate() {
//crosshair: Cast a ray straight up.
float _size = 12f;
Vector2 _direction = this.transform.up;
RaycastHit2D _hit = Physics2D.Raycast(this.transform.position,_direction,_size);
if (_hit.collider != null && _hit.collider.tag == "EnemyShipTag") {
// We touched something!
Vector2 target = new Vector2(_hit.collider.gameObject.transform.position.x,_hit.collider.gameObject.transform.position.y);
const float moveTime = 0.1f;
float step;
step = Vector2.distance(crosshairGO.transform.position,target);
crosshairGO.transform.position = Vector2.Movetowards(crosshairGO.transform.position,target,step / moveTime * Time.deltaTime);
Vector2 _pos3 = new Vector2(this.transform.position.x,crosshairGO.transform.position.y);
crosshairGO.transform.position = _pos3;
crosshairBegin = false;
} else {
// nothing hit
Vector2 _pos2 = new Vector2(this.transform.position.x,4.5f);
if (crosshairBegin) {
crosshairGO.transform.position = _pos2;
} else {
Vector2 _pos4 = new Vector2(this.transform.position.x,crosshairGO.transform.position.y);
crosshairGO.transform.position = _pos4;
}
}
}
解决方法
如果我理解你是对的。您可以创建一个 bool 值,并在您击中某物后将其设置为 true。
例如:
Vector2 _pos3 = new Vector2(this.transform.position.x,crosshairGO.transform.position.y);
crosshairGO.transform.position = _pos3;
crosshairBegin = false;
youHitSomething = true;
在创建射线之前 你可以写一个 if
if(!youHitSomething)
{
float _size = 12f;
Vector2 _direction = this.transform.up;
RaycastHit2D _hit = Physics2D.Raycast(this.transform.position,_direction,_size);
if (_hit.collider != null && _hit.collider.tag == "EnemyShipTag")
{
// We touched something!
// your Code
youHitSomething = true;
}
else
{
// Nothing hit
// your code
}
}
要让光线再次投射,您可以创建一个新方法
public void ActivateRay()
{
youHitSomething = false;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。