unity2D笔记-可移动的平台

目标:设置一个可移动平台,玩家跳上去后,会跟随移动
平台挂载脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//平台需要添加刚体 且为kinematic模式
public class MovingPlatform : MonoBehaviour
{
    public Vector3 startPos;
    public Vector3 endPos;
    // 获取平台上的游戏物体
    Rigidbody2D rigd2d;
    public ContactFilter2D contactFilter;
    public float speed;//移动速度
    ContactPoint2D[] contactPoint = new ContactPoint2D[10];
    private void Start()
    {
         rigd2d = transform.GetComponent<Rigidbody2D>();
       
    }
    public void FollowObjects()
    {   //获取平台上游戏物体
        //当平台和其他物体接触时,会将接触物体信息保存到ContactPoint2D数组中
        //count代表接触游戏物体数量
       int count = rigd2d.GetContacts(contactFilter,contactPoint);
       //设置接触物体的速度值
        for(int i = 0; i < count; i++)
        {
        //需要与endpos判断是施加左边的速度还是右边的速度
            contactPoint[i].rigidbody.velocity += new Vector2(transform.position.x < endPos.x ? speed : -speed,0);
        }
        

    }
    private void LateUpdate()
    {
        FollowObjects();
    }
    void Update()
    {
        transform.position = Vector3.MoveTowards(transform.position, endPos, speed* Time.deltaTime);
        if(transform.position == endPos)
        {
            Vector3 temp = endPos;
            this.endPos = this.startPos;
            this.startPos = temp;
        }
        
    }
}

在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值