碰撞触发器似乎总是在碰撞

时间:2015-02-12 06:03:28

标签: c# unity3d unityscript

我通过研究找到的所有东西都不会碰撞...我的问题是它总是碰撞......我把这个代码搞砸了,试图让它识别出它没有碰撞。他们在统一中并没有触及任何东西(使用盒子碰撞器的立方体触发器)......我对团结有点新意,我觉得我看起来很简单?

using UnityEngine;
using System.Collections;

public class Battlecam : MonoBehaviour 
{

//calling speed integers
    public float upSpeed = 10;
    public float rightSpeed = 60;
//bool colliding
    public bool colliding = false;


//triggers
    void OnTriggerEnter(Collider other)
    {
        colliding = true;
    }


    void OnTriggerExit(Collider other)
    {
        colliding = false;
    }


    void Start()
    {
            colliding = false;
    }
//camera movements
    void Update()
        {
            if (colliding = false) {
                float horizontal = Input.GetAxis ("Horizontal") * rightSpeed * Time.deltaTime;
                transform.Translate (0, horizontal, 0);

                float vertical = Input.GetAxis ("Vertical") * upSpeed * Time.deltaTime;
                transform.Translate (0, 0, vertical);

                colliding = false;
            } 
            else
                colliding = true;
        }

}

我无法弄清楚是什么让我的布尔真实。我已经搜索谷歌和堆栈交换任何答案,运气不佳。感谢

2 个答案:

答案 0 :(得分:2)

这行有一个错误:

 if (colliding = false) {

应该是,

 if (colliding == false) // or if(!colliding)

答案 1 :(得分:2)

Dinal24有第一点。

你应该解决的另一件事是:
OnTriggerEnter(Collider other)更改为OnTriggerStay(Collider other) 为什么呢?
如果程序在对象已经触摸时启动(bool应该返回true),则由于以下原因而强制返回false:

void Start()
{
    colliding = false;
}

一个选项是,如果您使用OnTriggerStay,它会检测到它是否真实。
另一种选择是完全删除void Start()。我不认为有任何需要。