【发布时间】:2022-07-10 15:30:59
【问题描述】:
我尝试查看所有类似的问题,但似乎找不到问题所在,我正在使用模板学习,然后通过视频进行说明,但一切正常,.cs文件没有显示任何错误或问题,我可以完美运行所有内容,除了 if 函数
if (Physics2D.Raycast(transform.position, Vector3.down, 0.1f))
{
Grounded = true;
}
else Grounded = false;
因为一旦我按下 W 键,它就会“跳跃”,如果我一直按下该键,它就会一直“浮动” 喜欢flappy bird,我也放了Debug。 Drawray 为了显示这个光线投射但它没有在编辑器中显示,我尝试将值从 0.1f 更改为 100f 但它没有显示,我是新来的,所以可能是一些标点符号或者我做了一个输入代码错误。
这是完整的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class JhonMovement : MonoBehaviour
{
public float JumpForce;
public float Speed;
private Rigidbody2D Rigidbody2D;
private float Horizontal;
private bool Grounded;
void Start()
{
Rigidbody2D = GetComponent();
}
void Update()
{
Horizontal = Input.GetAxisRaw("Horizontal");
Debug.DrawRay(transform.position, Vector3.down * 0.1f, Color.red);
if (Physics2D.Raycast(transform.position, Vector3.down, 0.1f))
{
Grounded = true;
}
else Grounded = false;
if (Input.GetKeyDown(KeyCode.W) && Grounded)
{
Jump();
}
}
private void FixedUpdate()
{
Rigidbody2D.velocity = new Vector2(Horizontal * Speed, Rigidbody2D.velocity.y);
}
private void Jump()
{
Rigidbody2D.AddForce(Vector2.up * JumpForce);
}
如果我输入或不输入“if”选项,角色的行为是否相同,不知道我在哪里犯了错误,我检查了一下,似乎没问题。
感谢您的帮助。
-
尝试设置
depthTest: false
,这样光线就不会被任何物体(包括例如这个相同的物体)阻挡/隐藏 -
我不确定您是否还有问题,但我按照相同的教程遇到了完全相同的情况。答案是 在游戏处于预览模式之前不会绘制射线 。按照教程,我感觉调试射线会一直被绘制,但实际情况是,为了使其可见,您必须运行游戏预览,然后返回编辑器视图。谢谢。希望我的评论能澄清你的疑惑。