首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >人物剪辑到地面的时候,我伸缩在一个统一的平台下

人物剪辑到地面的时候,我伸缩在一个统一的平台下
EN

Stack Overflow用户
提问于 2020-08-31 07:37:03
回答 1查看 414关注 0票数 0

每当我蜷缩在地面下时,我都会在伸缩后夹住地面。我遵循了Brackeys2d移动教程,这是我的c#移动脚本。角色控制器是github链接的副本:https://github.com/Brackeys/2D-Character-Controller。我唯一改变的是我添加了一行代码来修复动画

代码语言:javascript
复制
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour {
        
        public CharacterController2D controller;
        public Animator animator;
        public float runSpeed = 40f;

        float horizontalMove = 0f;
        bool jump = false;
        bool crouch = false;

         // Update is called once per frame
         void Update () {

                 horizontalMove = Input.GetAxisRaw("Horizontal") * runSpeed;


                 animator.SetFloat("Speed", Mathf.Abs(horizontalMove));

                 if (Input.GetButtonDown("Jump"))
                 {
                       jump = true;
                       animator.SetBool("IsJumping", true);
                 }
                 
                 if (Input.GetButtonDown("Crouch"))
                 {
                       crouch = true;
                 } else if (Input.GetButtonUp("Crouch"))
                 {
                    crouch = false;
                 }

          }

          public void OnLanding ()
          {
            animator.SetBool("IsJumping", false);
          }
          public void OnCrouching (bool IsCrouching){
            animator.SetBool("IsCrouching", IsCrouching);
          }
          
          void FixedUpdate ()
          {
                   // Move our character
                   controller.Move(horizontalMove * Time.fixedDeltaTime, crouch, jump);
                   jump = false;
          }
}

这是我的problem https://i.imgur.com/TiAIpJC.png的图片

EN

回答 1

Stack Overflow用户

发布于 2020-08-31 08:48:08

通常,在处理跳跃时,你会有一个groundCheck来查看你是否接触到了地面,以便能够跳跃。您的动画布尔会达到类似的效果。你可以有一个天花板检查,可以达到同样的目的。在你的玩家头顶放置一个触发对撞机,使用标签检查它是否与墙触发。

代码语言:javascript
复制
    public bool CeilingCheck;
    public bool crouch;

    void Update()
    {
        if (Input.GetButton("Crouch"))
        {
            crouch = true;
        }
        else if (!CeilingCheck)
        {
            crouch = false;
        }
    }

这可以通过天花板检查碰撞器附加到游戏对象上。

代码语言:javascript
复制
public PlayerMovement mainScript;

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.tag == "Level")
    {
        mainScript.CeilingCheck = true;
    }
}
private void OnTriggerExit2D(Collider2D collision)
{
    if (collision.tag == "Level")
    {
        mainScript.CeilingCheck = false;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63663106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档