20882人加入学习
(185人评价)
Unity2D 官方入门案例 - Ruby's Adventure

制作完成于2020年5月5日,基于Unity2019.3

价格 免费

修改对象本身坐标位置与修改对象关联的刚体的位置会有轻微差别 修改本身坐标与可能出现抖动

[展开全文]

rigidbody2d.MovePosition(position);

用rigidbody2d来移动

[展开全文]

防止小人碰撞物体时抖动

修改代码 将代码控制transform移动 改为控制刚体移动

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

    // Update is called once per frame
    void Update()
    {
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");
        Debug.Log(horizontal);

        Vector2 position = transform.position;
        position.x = position.x + 5f*horizontal*Time.deltaTime;
        position.y = position.y + 5f*vertical*Time.deltaTime;
       
        //transform.position = position;
        rigidbody2d.MovePosition(position);
    }
}
 

[展开全文]

单纯的使用transform组件进行角色的移动控制,当角色身上的RigidyBody组件和别的碰撞器检测碰撞  和  角色本身的通过Transform组件进行移动的脚本会发生冲突,导致角色发生碰撞时闪动

解决方法:直接通过RigidyBody组件提供的MovePosition方法进行移动

[展开全文]

理解处理问题的逻辑:

既然自己的运动操作逻辑和引擎组件的逻辑发生冲突,那么就修改

[展开全文]

fixedUpdate 替换update 

或者直接使用riigibody 本身来进行移动。

rigibody2d.MovePosition();

[展开全文]

private Rigidbody2D rigidbody2D;

 

 

[展开全文]

修复Ruby移动抖动问题

抖动发生的原因是因为unity的物理引擎的代码与我们自己制作的c#的代码chong'tu

[展开全文]