gpt4 book ai didi

c# - 统一二维 : How to collide with side of screen

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:05 24 4
gpt4 key购买 nike

我目前在 Android 的 2D 游戏中工作。我的场景中有一个玩家,如果用户倾斜他的设备,玩家对象就会在地面上移动。但他只是从左侧和右侧移出屏幕。我试图做一堵“墙”,但没有成功。在我的玩家游戏对象处有一个边缘碰撞器。现在我的问题是:我的玩家游戏对象如何与屏幕的一侧发生碰撞?

这是我的代码:

public GameObject player;


// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
Vector3 dir = Vector3.zero;
dir.y = Input.acceleration.x;

player.transform.Translate(new Vector2(dir.y, 0) * Time.deltaTime * 2000f);

}

非常感谢! :)

七月

编辑:

图 1 是我的墙,图 2 是我的播放器。

我试图用屏幕一侧的墙来解决这个问题。这些是 This is the image of my players inspector. Did I add the right things? 的图片

This is the inspector of my player.


已解决

解决方案代码:

Vector3 position = player.transform.position;
translation = Input.acceleration.x * movementSpeed * 50f;

if (player.transform.position.x + translation < LeftlimitScreen)
{
position.x = -LeftlimitScreen;
}
else if(transform.position.x + translation > RightlimitScreen)
{
position.x = RightlimitScreen;
}
else
{
position.x += translation;
player.transform.position = position;
}

这段代码对我有用! :)

最佳答案

这将在屏幕周围生成边缘碰撞器(对于 2d):

void GenerateCollidersAcrossScreen()
{
Vector2 lDCorner = camera.ViewportToWorldPoint(new Vector3(0, 0f, camera.nearClipPlane));
Vector2 rUCorner = camera.ViewportToWorldPoint(new Vector3(1f, 1f, camera.nearClipPlane));
Vector2[] colliderpoints;

EdgeCollider2D upperEdge = new GameObject("upperEdge").AddComponent<EdgeCollider2D>();
colliderpoints = upperEdge.points;
colliderpoints[0] = new Vector2(lDCorner.x, rUCorner.y);
colliderpoints[1] = new Vector2(rUCorner.x, rUCorner.y);
upperEdge.points = colliderpoints;

EdgeCollider2D lowerEdge = new GameObject("lowerEdge").AddComponent<EdgeCollider2D>();
colliderpoints = lowerEdge.points;
colliderpoints[0] = new Vector2(lDCorner.x, lDCorner.y);
colliderpoints[1] = new Vector2(rUCorner.x, lDCorner.y);
lowerEdge.points = colliderpoints;

EdgeCollider2D leftEdge = new GameObject("leftEdge").AddComponent<EdgeCollider2D>();
colliderpoints = leftEdge.points;
colliderpoints[0] = new Vector2(lDCorner.x, lDCorner.y);
colliderpoints[1] = new Vector2(lDCorner.x, rUCorner.y);
leftEdge.points = colliderpoints;

EdgeCollider2D rightEdge = new GameObject("rightEdge").AddComponent<EdgeCollider2D>();

colliderpoints = rightEdge.points;
colliderpoints[0] = new Vector2(rUCorner.x, rUCorner.y);
colliderpoints[1] = new Vector2(rUCorner.x, lDCorner.y);
rightEdge.points = colliderpoints;
}

关于c# - 统一二维 : How to collide with side of screen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50445982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com