unity3d - 如何正确旋转和优化
问题描述
我对编程很陌生,我正在开发这个游戏,我需要帮助,我正在使用统一。
我试图让 obj 稍微向左或向右旋转,但如果我同时开始按下按钮,则旋转不匹配。同时这段代码似乎效率不高,我该如何解决这个问题?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Character2DController : MonoBehaviour
{
public float MovementSpeed = 1;
private Rigidbody2D _rigidbody;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
var movement = Input.GetAxis("Horizontal");
transform.position += new Vector3(movement, 0, 0) * Time.deltaTime * MovementSpeed;
if (Input.GetKeyDown("a"))
{
RotateLeft();
}
else if (Input.GetKeyDown("d"))
{
RotateRight();
}
else if (Input.GetKeyUp("a"))
{
ResetRotateLeft();
}
else if (Input.GetKeyUp("d"))
{
ResetRotateLeft();
}
void RotateLeft()
{
transform.eulerAngles = new Vector3(0, 0, 10);
}
void ResetRotateLeft()
{
transform.eulerAngles = new Vector3(0, 0, 0);
}
void RotateRight()
{
transform.eulerAngles = new Vector3(0, 0, -10);
}
}
}
解决方案
这应该可以帮助您:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Character2DController : MonoBehaviour
{
public float MovementSpeed = 1;
public float RotationSpeed = 10;
private Rigidbody2D _rigidbody = null;
private float angle = 10;
private float currentAngle = 0;
private void Update()
{
float movement = Input.GetAxis("Horizontal");
float targetAngle = 0;
if(movement > 0)
{
targetAngle = -angle;
}
else if (movement < 0)
{
targetAngle = angle;
}
transform.position += new Vector3(movement, 0, 0) * Time.deltaTime * MovementSpeed;
currentAngle = Mathf.Lerp(currentAngle, targetAngle, RotationSpeed * Time.deltaTime);
transform.eulerAngles = new Vector3(0, 0, currentAngle);
}
}
推荐阅读
- javascript - 如何修复 js 中的“交换样式表功能”
- android - 如何从 RecyclerView 适配器向 Firestore 添加数据?
- python - 如何管理注册时输入错误电子邮件但保存在数据库中的用户
- mysql - 查询 JOINs 2 模型 ON
- javascript - 在新视图后过滤数据后复选框变为未选中。过滤数据后如何停止复选框未选中
- hyperledger-fabric - 锚点对等点在结构网络中有何不同?
- apostrophe-cms - 撇号中的动态选择字段
- javascript - 当另一个元素属性更改时更新元素的文本
- angular - Observables vs Promises - 处理,然后返回异步结果
- python - Django 无法在 STATICFILES_DIR 中找到 css 文件