Unity3d Unity 2D游戏对象随机旋转

Unity3d Unity 2D游戏对象随机旋转,unity3d,Unity3d,各位晚上好, 我不想问这个问题,但我是Unity的新手,我遇到了一个意想不到的错误(我想)。事实上,我今晚才开始做我的第一个2D游戏,在网上找不到任何能解释这一点的东西 长话短说,我有一个角色(游戏对象),在一个平台上从左向右移动,然后他应该落(或跳)到下一个平台上,继续移动,直到他落入无穷大。我已经能够让我的角色从左向右移动,但是当他到达两个平台之间的中间点时。。。平台开始逆时针旋转。我在下面附上截图来说明我的意思。以前有人见过这个吗 我的播放器有RigidBody2D和Box Collide

各位晚上好,

我不想问这个问题,但我是Unity的新手,我遇到了一个意想不到的错误(我想)。事实上,我今晚才开始做我的第一个2D游戏,在网上找不到任何能解释这一点的东西

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

我的播放器有RigidBody2D和Box Collider 2D组件 我的平台具有长方体碰撞器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);
    }
}
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类玩家控制:单一行为
{
公共刚体2d rb;
//在第一帧更新之前调用Start
void Start()
{
rb=GetComponent();
}
//每帧调用一次更新
无效更新()
{
rb.velocity=新矢量2(1,rb.velocity.y);
if(Input.GetMouseButtonDown(0))
{
rb.velocity=新矢量2(rb.velocity.x,10);
}
}
}
以下是游戏进行过程中的照片:


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

在每个平台上都有一个刚体2D和一个长方体碰撞器2D,因此玩家可以在上面行走并碰撞

在unity上,物理总是起作用的,所以即使你将重力设为零,玩家也有重力,因此它会推动平台并使其旋转


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

实际上平台不会移动

但是您已经将摄影机变换连接到播放器变换;因此,当比赛旋转改变时(当他摔倒时),摄像机旋转也随着球员而改变


您可以通过代码使相机跟随播放机的位置来解决此问题,

我实际上已将Z轴锁定在播放机上,并且完全有效!我从来没有想到过!非常感谢你!像你这样的人让学习游戏开发变得有趣。再次,谢谢,谢谢,谢谢!我真的希望我能将两个答案标记为正确,因为你的答案基本上是问题的一半,而这段视频稍后会非常有用。如果我能把两个答案标对,请告诉我。就像我告诉上面那位先生的那样,我从来没有想到过这一点!也非常感谢你!像你这样的人让学习游戏开发变得有趣。再次,谢谢,谢谢,谢谢!(如果您知道如何标记两个正确答案,请让我知道,因为我想确保您也获得学分)。欢迎您:>