Kec*_*Kec 12 android unity-game-engine
我尝试为Android创建游戏,我对高速物体有问题,他们不想碰撞.
我有Sphere Collider和Bouncy材质的Sphere,以及带有此param的RigidBody(Gravity = false,Interpolate = Interpolate,Collision Detection = Continuous Dynamic)
此外,我有3个墙壁与Box Collider和Bouncy材料.
这是我的Sphere代码
function IncreaseBallVelocity() {
rigidbody.velocity *= 1.05;
}
function Awake () {
rigidbody.AddForce(4, 4, 0, ForceMode.Impulse);
InvokeRepeating("IncreaseBallVelocity", 2, 2);
}
Run Code Online (Sandbox Code Playgroud)
在项目设置中,我设置:"惩罚力的最小渗透率"= 0.001,"解算器交互计数"= 50
当我在开始时玩它很好(它会反弹)但是当速度变高时,Sphere就会越过墙壁.
谁能帮我?
谢谢.
编辑
var hit : RaycastHit;
var mainGameScript : MainGame;
var particles_splash : GameObject;
function Awake () {
rigidbody.AddForce(4, 4, 0, ForceMode.Impulse);
InvokeRepeating("IncreaseBallVelocity", 2, 2);
}
function Update() {
if (rigidbody.SweepTest(transform.forward, hit, 0.5))
Debug.Log(hit.distance + "mts distance to obstacle");
if(transform.position.y < -3) {
mainGameScript.GameOver();
//Application.LoadLevel("Menu");
}
}
function IncreaseBallVelocity() {
rigidbody.velocity *= 1.05;
}
function OnCollisionEnter(collision : Collision) {
Instantiate(particles_splash, transform.position, transform.rotation);
}
Run Code Online (Sandbox Code Playgroud)
EDITED添加了更多信息
看:
您还可以尝试更改物理的固定时间步长。该值越小,Unity 计算场景物理的次数就越多。但请注意,将此值设置得太小(例如 <= 0.005)可能会导致游戏不稳定,尤其是在便携式设备上。
上面的脚本最适合子弹或小物体。您可以手动强制刚体碰撞测试:
public class example : MonoBehaviour {
public RaycastHit hit;
void Update() {
if (rigidbody.SweepTest(transform.forward, out hit, 10))
Debug.Log(hit.distance + "mts distance to obstacle");
}
}
Run Code Online (Sandbox Code Playgroud)