Unity 2D GameObject(s) 随机旋转

时间:2020-12-19 06:31:35

标签: unity3d

大家晚上好,

我不想问这个问题,但我是 Unity 的新手,我遇到了一个真正出乎意料的错误(我认为)。实际上,我今晚才开始着手我的第一个 2D 游戏,但在网上找不到任何似乎可以解释这一点的内容。

长话短说,我有一个角色(游戏对象),它只是在平台上从左向右移动,然后他应该落(或跳)到下一个平台并继续移动,直到落入无穷大。我已经能够让我的角色从左向右移动,但是当他到达两个平台之间的中间点时……平台开始逆时针旋转。我在下面包含屏幕截图以显示我的意思。有没有人见过这个?

我的播放器有 RigidBody2D 和 Box Collider 2D 组件 我的平台有 Box Collider 2D 组件

这是我使用的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerControls : MonoBehaviour
{
public Rigidbody2D rb;
// Start is called before the first frame update
void Start()
{
    rb = GetComponent<Rigidbody2D>();
}

// Update is called once per frame
void Update()
{
    rb.velocity = new Vector2(1, rb.velocity.y);

    if(Input.GetMouseButtonDown(0))
    {
        rb.velocity = new Vector2(rb.velocity.x, 10);
    }
}
}

这些是游戏进行时的照片:

enter image description here

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:2)

你游戏的问题不在于角色,而在于平台!

在每个平台上,您都有一个 Rigidbody2D 和一个盒子对撞机 2D,因此玩家可以在它们上面行走和碰撞。

统一物理始终有效,因此即使您将重力设置为零,玩家也有重力,因此它会推动平台并使它们旋转

您可以通过转到每个平台的刚体 2D 的约束并检查 Z 轴上的冻结旋转来轻松解决此问题。它将停止旋转

答案 1 :(得分:2)

实际上平台不会移动...

但是您已经将相机变换连接到玩家变换;所以当播放旋转改变时(当他摔倒时)相机旋转也会随着玩家改变

您可以通过代码This video could help you

使摄像机跟随玩家位置来解决此问题