unity3d - 更改对象比例后对撞机不起作用
问题描述
在我的 2d 游戏中,改变它的比例后没有对撞机工作。我的 Spaceship/Sprite 周围环绕着 Box collider 2D。现在我想使用边框,这就是使用 Cube 和 Cylinder 对象的原因。在我使用 Box collider 2D 的地方,它工作正常。但是当我改变立方体/圆柱体比例时[我的意图是使用一个立方体来覆盖整个边界] 然后它不起作用,我的宇宙飞船进入那个立方体/圆柱体对象。我也尝试过不同类型的对撞机,但缩放后没有人工作。
我在立方体(墙)上使用 BoxCollider2D。
我正在检查器中更改立方体变换的本地 y 比例:
解决方案
由于我没有得到正确的答案,所以我改变了主意,以不同的方式解决问题。这里我使用坐标轴来检查边界。现在我的宇宙飞船不会出现在屏幕之外。
public Rigidbody2D player;
private Vector2 screenBounds;
private float playerWidth;
private float playerHeight;
void Start()
{
player = this.GetComponent<Rigidbody2D>();
screenBounds = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, Camera.main.transform.position.z));
playerWidth = transform.GetComponent<SpriteRenderer>().bounds.size.x / 2;
playerHeight = transform.GetComponent<SpriteRenderer>().bounds.size.y / 2;
}
void FixedUpdate()
{
MovePlayer();
}
public void MovePlayer()
{
player.velocity = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
this.transform.Translate(Input.GetAxis("Horizontal"), 0, 0);
Vector3 viewPos = transform.position;
viewPos.x = Mathf.Clamp(viewPos.x, -screenBounds.x + playerWidth, screenBounds.x - playerWidth);
viewPos.y = Mathf.Clamp(viewPos.y, -screenBounds.y + playerHeight, screenBounds.y - playerHeight);
transform.position = viewPos;
}
推荐阅读
- javascript - 在 JavaScript 中使用 DOM 操作定位封闭/隐藏形式的元素
- html - 如何使用 gke 在 kubernetes 上部署 html 网站?
- android - android:attr/fontVariationSettings 在 android studio 中找不到
- sylius - Sylius PayumBundle 是否错误地处理了付款细节?
- node.js - MongoDB查找具有对象值的数组数据查询
- javascript - 如果在车把中活动 = 未定义,我该如何添加?
- linux - 使用 os.listdir() 运行 Python 脚本的问题
- angular - Angular 使用库的一个模块
- c# - 使用其他列表中的属性创建列表
- c++ - 使用 std::atomic<> 进行多线程