解决 unity 2d 中人物碰撞后抖动旋转问题

本文介绍了Unity 2D游戏中遇到的人物碰撞后产生抖动及角色不必要旋转的问题。解决方案包括使用刚体控制物体运动而非直接改变transform.position,以及通过为Rigidbody 2D设置约束来冻结z轴防止旋转。

碰撞后抖动问题的解决:

因为人物添加了Box Collider 2D 和刚体,因此当碰撞后会模拟实际的运动情况,和其它碰撞体碰撞后会发生抖动;

解决方法:

通过刚体控制物体的运动和位置,而不是通过 transfrom.position 来获得物体的位置并更新;

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

public class PlayerController : MonoBehaviour
{
    public float speed = 5f;

    Rigidbody2D rbody;//刚体组件

    // Start is called before the first frame update
    void Start()
    {
        rbody = GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        float moveX = Input.GetAxisRaw("Horizontal");
        float moveY = Input.GetAxisRaw("Vertical");

        Vector2 position = rbody.position;
        position.x += moveX * speed * Time.deltaTime;
        position.y += moveY * speed * Time.deltaTime;

        rbody.MovePosition(position);
    }
}

解决碰撞后角色会旋转的问题

通过为Rigidbody 2D 添加约束实现,冻结z轴即可:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值