【发布时间】:2020-09-22 18:22:58
【问题描述】:
我开始使用 Unity 学习 C#,我猜我的代码存在一些问题,我的播放器的移动工作正常但不是那么好。让我解释一下,我在屏幕底部有一个玩家,它只能自己从左到右移动,使用 transform.translate (我没有使用刚体),因为在与侧面碰撞时它会停止,并且不是常数运动,想法是,一旦与侧面发生碰撞,它就会改变方向,但速度相同。
当玩家与墙壁碰撞时会出现问题(移除了网格渲染器以保持它们透明)但如果同时按下键来触发方向的改变,玩家会卡在角落,如图所示在这个 gif 示例中:
等待播放器卡在角落,gif 大约需要 15 秒。
这是我的实际播放器脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PMovement : MonoBehaviour
{
public float playerSpeed = 8.0f;
void Update()
{
float moveX = playerSpeed * Time.deltaTime;
transform.Translate(moveX, 0, 0);
if (Input.GetKeyUp(KeyCode.Space))
{
playerSpeed = playerSpeed * -1;
}
}
void OnCollisionEnter(Collision target)
{
if (target.gameObject.tag.Equals("SideWalls") == true)
{
playerSpeed = playerSpeed * -1;
}
}
}
【问题讨论】: