Unity 三行代码实现 玩家跟随移动平台移动,非设置父节点
非设置父节点,核心代码只需要3行
using System.Collections.Generic; using UnityEngine; public class Platform : MonoBehaviour { List<Player> players = new List<Player>(); public int num; private Vector3 offset = Vector3.zero; private int index; private Vector3 originPos; void FixedUpdate() { for (int i = players.Count - 1; i >= 0; i--) { Player player = players[i]; Vector3 pos = transform.position; /*------------------------------核心代码--------------------------------------*/ //计算平台的位移差 offset = pos - originPos; //设置玩家位置 player.transform.position += offset; //重置originPos originPos = pos; /*--------------------------------------------------------------------------*/ } num = players.Count; } private void OnTriggerStay(Collider other) { AddPlayer(other); originPos = transform.position; } private void OnTriggerEnter(Collider other) { AddPlayer(other); //当玩家接触平台时,记录平台的位置 originPos = transform.position; } private void OnTriggerExit(Collider other) { RemovePlayer(other); } private void RemovePlayer(Collider other) { Player player = other.GetComponent<Player>(); if (null != player) { if (players.Contains(player)) { players.Remove(player); } } } private void AddPlayer(Collider other) { Player player = other.GetComponent<Player>(); if (null != player) { if (!players.Contains(player)) { players.Add(player); } } } }
这个是使用Collider的方式,使用Box射线检测也可以做到,而且更加简洁
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!