作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 Rigidbody2D 和圆形碰撞器的播放器。玩家收集带有圆形对撞机的硬币。我左右移动播放器。当它收集硬币时,硬币会被破坏,玩家会停止,所以我必须再次触摸才能继续向左/向右移动。那么,如何在不停止玩家的情况下收集硬币呢?这是我移动刚体的代码:
void TouchMove()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
float middle = Screen.width / 2;
if (touch.position.x < middle && touch.phase == TouchPhase.Began)
{
MoveLeft();
}
else if (touch.position.x > middle && touch.phase == TouchPhase.Began)
{
MoveRight();
}
}
else
{
SetVelocityZero();
}
}
public void MoveLeft()
{
rb.velocity = new Vector2(-playerSpeed, 0);
}
public void MoveRight()
{
rb.velocity = new Vector2(playerSpeed, 0);
}
public void SetVelocityZero()
{
rb.velocity = Vector2.zero;
}
最佳答案
您的硬币不应与任何物体碰撞,尤其是玩家。
让硬币的碰撞器被触发,然后使用 OnTriggerEnter2D
来检测它何时接触到玩家以销毁硬币而不是 OnCollisionEnter2D
。
附加到你的硬币游戏对象:
void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.CompareTag("Player"))
{
Debug.Log("Player detected. Destroying this coin");
Destroy(gameObject);
}
}
或者附加到你的玩家游戏对象:
void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.CompareTag("Coin"))
{
Debug.Log("Coin detected. Destroying coin");
Destroy(collision.gameObject);
}
}
关于c# - Rigidbody2D 在撞到对撞机时停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48211990/
我正在尝试制作一款基本游戏,在该游戏中,玩家通过击中一个物体而失去生命。按照我编写代码的方式,每次对象和玩家接触时都会发生这种情况。我希望玩家只失去一条生命,而不是全部。知道如何解决吗?谢谢 vo
我想做一些实时声音处理,我听说了 supercollider 它看起来不错,但我想坚持使用 python,因为“正常”编程是个问题。 有什么方法可以将 python 脚本作为模块加载到 superco
我是一名优秀的程序员,十分优秀!