当前位置: 首页 > 知识库问答 >
问题:

Unity3D播放器在石头上穿行

林富
2023-03-14

大家好,我的玩家正在石头上行走,穿过石头。名为Champ的玩家有一个盒子对撞机,石头有一个网格对撞机。而且玩家有刚体。我尝试了我发现的每一件事,但没有任何帮助我解决我的问题。

移动播放器。cs脚本

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

public class MovePlayer : MonoBehaviour
{

    Rigidbody rb;

    public float speed = 10f;
    private Vector3 moveDirection;
    public float rotationSpeed = 0.05f;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void Update()
    {
        moveDirection = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical")).normalized;
    }

    void FixedUpdate()
    {
        rb.MovePosition(rb.position + transform.TransformDirection(moveDirection * speed * Time.deltaTime));
        RotatePlayer();
    }

    void RotatePlayer()
    {
        if (moveDirection != Vector3.zero)
        {
            transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(moveDirection.normalized), rotationSpeed);
        }
        transform.Translate(moveDirection * speed * Time.deltaTime, Space.World);
    }

}

检验员中的播放器设置

检查器中的石头设置

场景预览

谢谢你们的帮助,伙计们!:)

共有1个答案

艾安和
2023-03-14

测试了你的代码,碰撞似乎在我这边工作得很好。

通过将脚本添加到带盒碰撞器的游戏对象中并使用立方体创建一个小级别来测试它。还做了一面墙,我修改成使用网格碰撞器而不是盒子碰撞器。玩家与场景中的物体正常碰撞。

你应该从项目设置中仔细检查你的图层碰撞矩阵

  1. 您还可以尝试将新立方体添加到场景中,并将其层设置为“墙”,以查看播放器是否与它发生碰撞。如果是这样的话,那么石头的网格可能会有问题
  2. 如果没有,我将禁用播放器中的动画和重力身体组件,以确保它们不会干扰碰撞

 类似资料:
  • 本文向大家介绍Unity3D实现播放gif图功能,包括了Unity3D实现播放gif图功能的使用技巧和注意事项,需要的朋友参考一下 Unity是不识别Gif格式图的,需要我们使用c#将gif里多帧图转化为Texture2D格式。需要使用System.Drawing.dll.此dll在unity安装目录下就可以找到。由于unity没有gif格式的文件,所以我们无法在面板指定,需要动态加载。所以将gi

  • 进入具体播放器编辑页面,点击缓冲片头标签,设置播放缓冲片头。缓冲片头位置如下图所示: · 可通过引用线上素材和本地上传两种方式,添加视频加载时的缓冲片头; · 用户可通过开关控制缓冲片头是否展示; · 仅支持JPG、JPEG、GIF、PNG、SWF格式素材文件; · 素材文件大小不可超过500KB; · 用户可保存多组片头切换使用。

  • 有没有办法通过Spotify Web API将歌曲排入用户在其活动设备上的队列? 我不想播放网页上的歌曲。我想通过一个网页/服务器应用程序,使用用户凭据调用Spotify web API,向他们的队列添加一个曲目,该曲目将在他们的活动Spotify设备上播放。

  • 由于小程序里只能使用小程序提供的video组件,所以Mudu.Room.Player仅提供了对用户播放时长的统计功能。 只需要在小程序的事件处理中执行相应函数即可。 video组件bindplay时调用 Mudu.Room.Player.OnPlay() video组件bindpause时调用 Mudu.Room.Player.OnPause() video组件bindended时调用 Mud

  • Mudu.Player 播放器组件(muduPlayer 新版) 升级提示 在 初始化播放器 和使用 player.load() 方法时新增isLive参数(默认为false) 该参数用于控制播放器的ui展示,当为false时 显示进度条 和 时间进度 ;当为true时 隐藏进度信息 并 显示为直播状态 初始化播放器 var isChannelLiving = !!Mudu.Room.GetLiv

  • 我已经创建了一个使用媒体播放器播放音频的应用程序,但即使其他应用程序(如youtube)开始播放视频,我的播放器也不会停止。 如何停止音频,如果其他应用程序开始播放音频。 我用过mediaPlayer。start();播放音频。 任何帮助都将不胜感激。