防止2D播放器穿过墙壁

时间:2017-01-28 11:24:34

标签: unity3d unity5 unity3d-2dtools unity3d-5

我正在尝试制作自上而下游戏的基础知识。

我目前有一个玩家精灵,它有一个带有盒式对撞机2D的Kinematic RigidBody2D。这个精灵的比例是(1,1)。

墙精灵有一个比例为(20,1)的盒子对撞机。

要控制播放器,我使用以下代码。

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


public class PlayerMovement : MonoBehaviour {
    public Rigidbody2D rb2D;
    void Start() {
        rb2D = GetComponent<Rigidbody2D>();
    }
    void FixedUpdate() {
        if (Input.GetKey (KeyCode.UpArrow)) {
            Vector2 move = new Vector2(0,1);
            rb2D.MovePosition(rb2D.position + move);
        }
        if (Input.GetKey (KeyCode.DownArrow)) {
            Vector2 move = new Vector2(0,-1);
            rb2D.MovePosition(rb2D.position + move);
        }
    }
}

使用上面的代码,我可以控制播放器并向上或向下移动它们,当试图击中播放器下方的墙壁时没有撞到墙壁,而是穿过它,好像它不在那里。

我是Unity的新手,所以任何其他可能有用的信息都可以随时告诉我,我会更新我的问题。

谢谢!

1 个答案:

答案 0 :(得分:0)

取消选中IsKinematic组件中的 RigidBody2D属性。这是因为将isKinematic设置为 true 会使您的gameObject NOT 受到任何物理重力<的影响/ strong>部队。

同时查看您的是否未标记为IsTrigger!检查墙壁的Collider组件中的那个。