大家晚上好,
我不想问这个问题,但我是 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);
}
}
}
这些是游戏进行时的照片:
答案 0 :(得分:2)
你游戏的问题不在于角色,而在于平台!
在每个平台上,您都有一个 Rigidbody2D 和一个盒子对撞机 2D,因此玩家可以在它们上面行走和碰撞。
统一物理始终有效,因此即使您将重力设置为零,玩家也有重力,因此它会推动平台并使它们旋转
您可以通过转到每个平台的刚体 2D 的约束并检查 Z 轴上的冻结旋转来轻松解决此问题。它将停止旋转
答案 1 :(得分:2)
实际上平台不会移动...
但是您已经将相机变换连接到玩家变换;所以当播放旋转改变时(当他摔倒时)相机旋转也会随着玩家改变
您可以通过代码This video could help you
使摄像机跟随玩家位置来解决此问题