【unity造轮子】最简单的双向可穿越平台制作(Platform Effector 2D的使用)

先看最终效果

在这里插入图片描述

实现这个效果的重点就是2D平台效应器(Platform Effector 2D)

2D平台效应器(Platform Effector 2D)

1. 这里简单解释一下

2D平台效应器(Platform Effector 2D)是Unity中的一个组件,它可以用于为2D游戏中的平台添加一些特殊的物理效果。要使用2D平台效应器,您需要首先为游戏对象添加一个2D碰撞器组件,然后再添加PlatformEffector2D组件。在PlatformEffector2D组件的属性面板中,您可以调整各种参数以实现所需的效果。

2.一些常见的效果包括:

  1. 单向平台:允许游戏角色从平台的底部穿过,然后站在平台的顶部。这在很多2D平台游戏中是常见的效果。
  2. 表面弹力:为平台表面添加弹力,使游戏角色在接触平台时产生弹跳效果。
  3. 表面摩擦:控制游戏角色在平台表面上移动时的摩擦力,可以影响角色在平台上的移动速度。

3.Platform Effector 2D具有各种属性,使我们可以控制它的行为。这些属性包括:

  1. Surface Arc:它用于控制平台曲面上的弧度,可以让平台变得更加平滑或更加弯曲。
  2. Use One-Way:它用于控制玩家是否可以从平台下面穿过,可以让平台变成像一个通道一样。
  3. Surface Penalty:它用于控制玩家在平台上的摩擦力大小,可以让玩家滑动更远或更少。
  4. Use Global Angle:它用于控制玩家与平台的相对角度,可以让玩家更容易或更难在平台上移动。

总之,Platform Effector 2D提供了一种有用的方式来创建2D平台游戏中的各种效果。使用它可以让游戏更加有趣和具有挑战性。

可向上穿越的平台

给平台添加2D平台效应器(Platform Effector 2D),记得勾选Use One-Way,让平台变成一个通道,当然它默认就已经勾选了
在这里插入图片描述

给平台添加碰撞器,勾选使用效用器
在这里插入图片描述
这时候就已经实现了向上单向穿越,是不是很简单
在这里插入图片描述

向下穿越的平台

要实现向下穿越平台,得书写代码实现,

添加脚本,将脚本挂载在人物上,代码已经添加了非常详细的注释了,这里我就不做过多的解释了

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

public class BallJump : MonoBehaviour
{
    
    
    Rigidbody2D rb2D; // 2D刚体组件
    CircleCollider2D cc2D; // 2D圆形碰撞器组件

    // 在游戏对象启动时执行
    private void Start()
    {
    
    
        rb2D = GetComponent<Rigidbody2D>(); // 获取2D刚体组件
        cc2D = GetComponent<CircleCollider2D>(); // 获取2D圆形碰撞器组件
    }

    // 每帧更新时执行
    private void Update()
    {
    
    
        // 设置水平速度
        rb2D.velocity = new Vector2(Input.GetAxisRaw("Horizontal") * 5, rb2D.velocity.y);

        // 按下空格键时,给球施加向上的力
        if (Input.GetKeyDown(KeyCode.Space))
        {
    
    
            rb2D.AddForce(Vector2.up * 10, ForceMode2D.Impulse);
        }

        // 按下S键时,设置圆形碰撞器为触发器
        if (Input.GetKeyDown(KeyCode.S))
        {
    
    
            cc2D.isTrigger = true;
        }
    }

    // 当游戏对象离开触发器时执行
    private void OnTriggerExit2D(Collider2D collision)
    {
    
    
        // 如果离开的游戏对象属于第8层(Layer 8)
        if (collision.gameObject.layer == 8)
        {
    
    
            // 设置圆形碰撞器不再是触发器
            cc2D.isTrigger = false;
        }
    }
}

这段代码主要实现了一个球体在水平方向上移动,按下空格键时跳跃,以及按下S键时通过其他游戏对象的功能。记得给平台加个layer 层

最终效果

在这里插入图片描述

完毕

好了,我是向宇,https://xiangyu.blog.csdn.net/

一位在小公司默默奋斗的开发者,出于兴趣爱好,于是开始自习unity。最近创建了一个新栏目【你问我答】,主要是想收集一下大家的问题,有时候一个问题可能几句话说不清楚,我就会以发布文章的形式来回答。 虽然有些问题我可能也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~

我知道阁下是一位白嫖高手,但假如我说下面有个打赏按钮,那阁下又该如何应对呢?
(量力而行,力虽微,心暖人,你的支持是我创作的最大动力)

猜你喜欢

转载自blog.csdn.net/qq_36303853/article/details/131095556
今日推荐