Ruby‘s Adventrue游戏制作笔记(五)Unity解决碰撞抖动和旋转问题

17 篇文章 0 订阅
17 篇文章 1 订阅

Ruby's Adventrue游戏制作笔记(五)Unity解决碰撞抖动和旋转问题


前言

本文章是我学习Unity官方项目项目所做笔记,作为学习Unity的游戏笔记,在最后一章会发出源码,如果等不及可以直接看源码,里面也有很多注释相关,话不多说,让Ruby动起来!
游戏引擎:Unity2020.3

一、约束旋转

在ruby的刚体约束中选择约束Z轴旋转
在这里插入图片描述

二、解决抖动问题

使用刚体移动
编辑PlayerController脚本

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

public class PlayerController : MonoBehaviour
{

    // 玩家速度
    public float speed = 5f;

    // 获得玩家刚体
    private Rigidbody2D rbody;

    // Start is called before the first frame update
    void Start()
    {
        // 获得玩家刚体
        rbody = GetComponent<Rigidbody2D>();
    }

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

        float moveX = Input.GetAxisRaw("Horizontal");  // 控制水平移动方向 按下A时返回 -1,按下D时返回 1
        float moveY = Input.GetAxisRaw("Vertical"); // 控制垂直方向 W:1 S:-1 

        // 创建position坐标,存储玩家输入的坐标
        Vector2 position = rbody.position;
        position.x += moveX * speed * Time.deltaTime;
        position.y += moveY * speed * Time.deltaTime;

        // 将最终坐标赋值给玩家
       // transform.position = position;

        // 使用刚体
        rbody.position = position;
    }
}

系列链接

Ruby‘s Adventrue游戏制作笔记(一)Unity创建项目

Ruby‘s Adventrue游戏制作笔记(二)Unity控制ruby移动

Ruby‘s Adventrue游戏制作笔记(三)Unity使用tilemap绘制场景

Ruby‘s Adventrue游戏制作笔记(四)Unity绘制其他元素

Ruby‘s Adventrue游戏制作笔记(五)Unity解决碰撞抖动和旋转问题

Ruby‘s Adventrue游戏制作笔记(六)Unity相机跟随玩家移动

Ruby‘s Adventrue游戏制作笔记(七)Unity采集生命道具

Ruby‘s Adventrue游戏制作笔记(八)Unity伤害陷阱

Ruby‘s Adventrue游戏制作笔记(九)Unity添加敌人

Ruby‘s Adventrue游戏制作笔记(十)Unity添加动画

Ruby‘s Adventrue游戏制作笔记(十一)Unity角色攻击——发射子弹

Ruby‘s Adventrue游戏制作笔记(十二)Unity给角色添加简单的特效

Ruby‘s Adventrue游戏制作笔记(十三)Unity血条UI的显示

Ruby‘s Adventrue游戏制作笔记(十四)Unity播放游戏音效

Ruby‘s Adventrue游戏制作笔记(十五)UnityNPC对话

Ruby‘s Adventrue游戏制作笔记(十六)Unity子弹数量及其UI

Ruby‘s Adventrue游戏制作笔记(十七)Unity添加游戏胜利条件和失败条件和导出游戏

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity中实现旋转归零的方法可以通过存取物体的起始位置和起始旋转来实现。你可以在代码中定义一个存储物体起始位置和旋转的变量,然后在Start()函数中将物体的初始位置和旋转赋值给这些变量。接下来,你可以编写一个Reset()函数,在这个函数中将物体的位置和旋转重置为起始位置和起始旋转。以下是一个示例代码: ```csharp using System.Collections; using System.Collections.Generic; using UnityEngine; public class ResetObject : MonoBehaviour { public GameObject targetObject; private Vector3 startPosition; private Quaternion startRotation; void Start () { startPosition = targetObject.transform.position; startRotation = targetObject.transform.rotation; } public void Reset() { targetObject.transform.position = startPosition; targetObject.transform.rotation = startRotation; } } ``` 在这个示例中,我们创建了一个ResetObject的脚本,并在Inspector窗口中将目标物体指定为要重置的物体。脚本中的Start()函数会在游戏开始时存储目标物体的起始位置和旋转。Reset()函数会将目标物体的位置和旋转重置为起始位置和起始旋转。 请注意,以上代码仅供参考,你需要根据自己的项目和需求进行适当的修改和调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [unity物体位移 旋转后的复位问题](https://blog.csdn.net/qq_45498613/article/details/129016316)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Unity通过鼠标操作来控制场景视角(包括旋转、平移以及缩放)](https://blog.csdn.net/yldmkx/article/details/108821409)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值