[英]Unity forcing physics engine to check collisions
我正在统一创建一个游戏,玩家可以将一个对象(一张卡片)拖到另一个对象(一个敌人)上。 如果他们将卡片拖到敌人身上,我想运行一些代码,如果不是,我想将卡片返回到其初始位置。 我在两个对象上都放置了一个对撞机,但它没有按应有的方式工作。 我假设这是因为对象在物理引擎看到碰撞之前被移回其初始位置,但我不知道如何解决这个问题。 我在移动卡片时停用了卡片上的对撞机,以避免它触发碰撞,直到玩家使用 onmousedown 和 onmouseup 事件放置它。 有关如何解决此行为的任何提示? 我可以强制物理引擎检查与 onmouseup 事件的碰撞吗? 我知道碰撞正在起作用,因为当我关闭返回初始位置行为时,游戏会按预期运行。
如何使用对撞机作为触发器而不使用刚体或任何东西。 然后,如果有触发器输入事件,则将 bool 设置为 true。 如果有触发器退出,则将布尔值重置为 false。
现在,如果您“释放”卡片,请检查 bool 是真还是假。
现在有点喜欢你可以在 bool 激活时在卡片周围设置一个发光的边框(只需签入更新)
例子:
public class Card : MonoBehaviour {
private bool isHolding;
private bool isHovering;
public Vector3 startPos;
public void Start() {
startPos = transform.position;
}
public void Update() {
// Code where you check if the card is Clicked and Moved by the player
// If so set isHolding = true
// dont enter the check if holding blablabla when animation stuff is happening
if (doAnimationStuff) {
// do animation
// Destroy Object
return;
}
// Code to check if isHolding == false
if (!isHolding) {
if (!isHovering) {
transform.position = startPos;
} else {
doAnimationStuff = true;
}
}
}
private void OnTriggerEnter(Collider other) {
// Check if other is a player
// if so set isHovering = true
}
private void OnTriggerExit(Collider other) {
// Check if other is a player
// if so set isHovering = false
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.