我是团结的新手,我试图成为一个无尽的跑步者。当我的球员(球)击中其中一面墙时,游戏需要走向现场:LostMenu。我的问题是碰撞不起作用。碰撞时没有任何事情发生......以下是玩家和墙壁上的检查员:墙壁http://prntscr.com/a2pgzm玩家http://prntscr.com/a2ph66。
墙上的碰撞脚本:
using UnityEngine;
using System.Collections;
public class LostByWallCSR : MonoBehaviour
{
void OnCollisionEnter (Collision col)
{
if(col.gameObject.name == "Player")
{
Application.LoadLevel("LostMenu");
Debug.Log ("WORKS!");
}
}
}
播放器上的移动脚本:
using UnityEngine;
using System.Collections;
public class CharacterControllerz : MonoBehaviour {
public float speed = 5f;
public float gravity = 20f;
private Vector3 moveDirections = new Vector3();
private Vector3 inputs = new Vector3();
void FixedUpdate()
{
CharacterController cc = GetComponent<CharacterController>();
if (cc.isGrounded)
{
if (Input.GetKey("left"))
inputs.z = 3;
else if (Input.GetKey("right"))
inputs.z = -3;
else
inputs.z = 0;
moveDirections = transform.TransformDirection(inputs.x, 0, inputs.z) * speed;
}
inputs.x = 5;
moveDirections.y = inputs.y - gravity;
cc.Move(moveDirections * Time.deltaTime);
}
}
有关如何正确设置碰撞的任何想法?附加一个rigibody没有帮助它。除非我遗漏某些事情。
答案 0 :(得分:0)
确保两个对象都有一个对撞组件。
您需要将刚体组件附加到其中一个对象上。(如果您没有附加刚体,它将无效)
您的球体对撞机是触发器,将其删除或将您的功能更改为
public void OnTriggerEnter(Collider other)
{
}
答案 1 :(得分:0)
您需要使用 OnControllerColliderHit 方法
private void OnControllerColliderHit(ControllerColliderHit hit)
{
if (hit.gameObject.CompareTag("Trap"))
{
Debug.Log("colisiono with trap");
playerDentro = true;
}
else
{
if (!hit.gameObject.CompareTag("Trap"))
{
Debug.Log("player salio de la trampa");
playerDentro = false;
}
}
}e