我通过研究找到的所有东西都不会碰撞...我的问题是它总是碰撞......我把这个代码搞砸了,试图让它识别出它没有碰撞。他们在统一中并没有触及任何东西(使用盒子碰撞器的立方体触发器)......我对团结有点新意,我觉得我看起来很简单?
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;
}
}
我无法弄清楚是什么让我的布尔真实。我已经搜索谷歌和堆栈交换任何答案,运气不佳。感谢
答案 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()
。我不认为有任何需要。