我正在制作一个 2D 方块破坏游戏;问题是我的球在一段时间后会变慢,但没有任何重力,并且弹力为 100%,所以它应该保持所有动能。我只需要球保持恒定速度。这是我的代码:using System.Collections;using System.Collections.Generic;using UnityEngine;public class Ball : MonoBehaviour { public Paddle paddle; private Vector3 paddleToBallVector; private bool Started = false; void Start () { paddleToBallVector = this.transform.position paddle.transform.position; print(paddleToBallVector); //this.GetComponent<Rigidbody2D>().drag = 0f; } void FixedUpdate () { if (!Started) { this.transform.position = paddle.transform.position + paddleToBallVector; if (Input.GetMouseButtonDown(0)) { Debug.Log("mouse clicked, Started = " + Started); Started = true; this.GetComponent<Rigidbody2D>().velocity = new Vector2(2f, 10f); } } }}
3 回答
白衣非少年
TA贡献1155条经验 获得超0个赞
问题不在于代码 - 它在游戏重力设置中。您可以通过以下两种方式之一解决:
1) 改变球的重力比例——去球类游戏对象或Prefab,查看RigidBody2D组件。在那里,您有一个名为“重力比例”的字段,通常设置为 1。将其更改为 0.1 将使您的球轻巧快速。但是,这种设置对于具有多个级别的游戏并不理想。
2)在项目设置中更改全局重力。进入编辑菜单到项目设置,然后在菜单中选择 Physics2D:
在打开的面板中,您通常拥有 -9.81 的真实重力比例。将其更改为 -1 之类的内容
这将使您游戏中的所有对象变轻,并减少所有级别的重力。在只有球松散并四处抛掷的砖块破坏型游戏中,这是最有意义的。
慕桂英3389331
TA贡献2036条经验 获得超8个赞
如果你想让球有恒定的速度,你可以在每一帧中设置它 Update
myRigidbody.velocity = speed * (myRigidbody.velocity.normalized);
哪里myRigidBody
是私人RigidBody
在脚本中声明的地方,并设置Start()
这样的
myRigidbody = this.GetComponent<Rigidbody>();
因为您不想调用GetComponent
每一帧。
- 3 回答
- 0 关注
- 139 浏览
添加回答
举报
0/150
提交
取消