所以我有个密码:
public class ball_physics : MonoBehaviour
{
public Rigidbody ball;
public open2close claw;
public Vector3 offset;
Rigidbody rb;
private float forceMultiplier = 20;
private bool isShoot;
Vector3 start_position;
public path path;
void Start()
{
rb = GetComponent<Rigidbody>();
rb.Sleep();
start_position = transform.position;
}
void Update()
{
// *************
}
void Shoot(Vector3 Force)
{
if (isShoot)
{
print("isshot false");
return;
}
rb.AddForce(new Vector3(Force.x, Force.y,Force.z)* forceMultiplier);
isShoot = true;
path.Instance.HideLine();
}
private void OnTriggerStay(Collider ball)
{
if (isShoot)
{
return;
}
print("ontriggerstay");
if (claw.isClosed && claw.transform.gameObject.tag == "claw" )
{
print("claw");
//rb.Sleep();
transform.position = claw.rightClaw.transform.position + offset;
Vector3 forceInit = (start_position - transform.position);
path.Instance.UpdateTrajectory(forceInit * forceMultiplier, rb, transform.position);
}
}
private void OnTriggerExit(Collider ball)
{
if (claw.isClosed && claw.transform.gameObject.tag == "claw")
{
rb.WakeUp();
}
if (claw.isClosed == false)
{
Shoot(start_position - transform.position);
}
}
}因此,在我的其他代码中,我有一个OnStayTrigger,它基本上是一个爪子,抓住一个球并拉。但这段代码应该显示弹道线和射击。当我第一次开枪的时候。但是当我再试一次的时候,爪子可以抓住球,但它不会显示轨迹线,也不会射门。所以我猜这是需要修正的代码。我怎样才能让OnTriggerStay一直工作。我不想更改任何代码,因为它工作得很完美。我如何才能不断地更新OnTriggerstay以便它能够工作呢?
发布于 2022-10-14 00:09:24
乍一看,您似乎从未将isShoot设置为false,因此它再也不会触发,因为在OnTriggerStay中,如果isShoot = true,则返回它。
https://stackoverflow.com/questions/74062671
复制相似问题