我是初学者并试图在团结中进行点球射击游戏。我刚刚设置场景并且只是试图将球射向球门柱。 当我射球时,它向球门方向移动但不会下降,因为我正在通过脚本射击它并且它的重力关闭并且运动学已经开启。
目前我有以下脚本:
void Start () {
startTime = Time.time;
rb.GetComponent<Rigidbody>();
}
void Update () {
transform.position -= fakevel * Time.deltaTime;
transform.position += fakeGravity * Time.deltaTime;
fakevel *= 0.999f ;
}
void OnTriggerEnter( Collider other ) {
fakevel = new Vector3(0.01f, 0, 0) * 2000f;
fakeGravity = new Vector3 (0 ,0.01f, 0)* 200f;
y = -45.68312f;
}
}
我已尝试启用重力并在某个特定位置禁用运动但我这样做的重力只是将它拉到那个位置并且它看起来不真实。一些屏幕拍摄附加。
请帮助我设置球的轨迹并在球门柱碰撞时停止它,
答案 0 :(得分:1)
我建议你在你的球上使用非运动刚体并在射击时为它添加一个力:GetComponent<Rigidbody>().AddForce(forceVector3, ForceMode.Impulse)
(这只是一个例子,你应该避免经常调用GetComponent,你最好在Start上调用刚体组件并将其存储在私有变量中
这样Unity的物理引擎可以处理重力和球。速度随时间变化。要修改轨迹,您可以使用球的属性进行游戏。刚体组件。
如果您想要更多地控制速度,您还可以直接在FixedUpdate()
(在每次物理更新之前调用)中设置刚体的速度。这样做时,你必须考虑速度以m / s为单位,物理引擎为你处理子步骤(我假设FixedUpdate()
每秒被调用一次以上),这意味着你没有将你的速度乘以一些增量时间(但我现在不是100%肯定)。
答案 1 :(得分:1)
看看它是如何工作的,只是没有给你想要的效果,你可以花几个小时微调,或者像xyLe_陈述,使用内置的物理。使用内置物理并不是一件坏事,你只需聪明一点。你也可以添加一个弹性物理材料,这将有助于球的良好,球感。