球落在平台对撞机上

时间:2016-10-23 22:25:24

标签: unity3d

有2个游戏对象;平台和球。

球通过自定义控制器控制,平台通过动画移动。

<小时/> 的部件

platform
  +  rigidbody 
  +  box collider

ball
  +  rigidbody 
  +  sphere collider

当球与平台接触时,球应停止其当前速度并获得与其接触的平台的速度。然而,目前,球直接穿过平台,好像没有连接碰撞器一样。

播放器代码:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class PlayerController : MonoBehaviour {

public Text winText;
public float speed;
public Text countText;
public GameObject light;

public GameObject player;
private Rigidbody rb;
private int count;
private int a = 0;
private int b = 0;
private int c = 0;

void Start ()
{
    rb = GetComponent<Rigidbody>();
    count = 0;
    SetCountText ();
    winText.text = "";
}
void FixedUpdate()
{
    if (player.transform.position.y < -15) {
        transform.position = new Vector3(a, b, c);

    }
    float moveHorizontal = Input.GetAxis ("Horizontal");
    float moveVertical = Input.GetAxis ("Vertical");

    Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
    rb.AddForce (movement * speed );

}
void OnTriggerEnter (Collider other)
{
    if (other.gameObject.CompareTag ("Pick Up"))
    {
        other.gameObject.SetActive (false);
        count = count + 1;
        SetCountText ();
    }
    if (other.gameObject.CompareTag ("Check point"))
    {
        other.gameObject.SetActive (false);
        light.gameObject.SetActive (false);
        a = 0;
        b = -10;
        c = 96;
    }
}
void SetCountText ()
{
    countText.text = "Score: " + count.ToString();
    if (count >= 8)
    {
        winText.text = "You Win!";
    }
}

}

4 个答案:

答案 0 :(得分:3)

您说您使用的是自定义控制器。请确保您没有使用Transform()手动更改球的位置并移动球,因为这违反了统一的物理定律。而是使用Rigidbody.MovePosition()。 更多Unity docs

答案 1 :(得分:1)

  • 确保所有游戏对象都在同一Z轴上。
  • 在OnCollisionEnter2D()方法中抛出debug.log()消息,看它们是否实际发生冲突。
  • 您还可以检查您正在使用的碰撞器类型吗?

关于团结碰撞的更多细节: https://docs.unity3d.com/Manual/CollidersOverview.html

此外,如果它是自定义控制器,请确保某些东西不会改变球的位置,以便进入平台下方。

答案 2 :(得分:0)

快速移动的物体需要动态的ContinuousDynamic或Continuous模式才能可靠地运行

答案 3 :(得分:0)

确保两个刚体都是动能的并且碰撞器不是触发器。这真的对我有用。