当前位置: 首页 > news >正文

unity 控制玩家物体

创建场景

放上一个plane,放上一个球 sphere,假定我们的球就是我们的玩家,使用控制键w a s d 来控制球也就是玩家移动。增加一个材质,把颜色改成绿色,把材质赋给plane,区分我们增加的白球。
在这里插入图片描述

增加组件和脚本

增加一个Character Controller 组件,同时给圆球增加一个脚本control。
在这里插入图片描述

增加c# 脚本

脚本如下所示:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class playercontrol : MonoBehaviour
{// Start is called before the first frame updateprivate CharacterController player;void Start(){player = GetComponent<CharacterController>();}// Update is called once per framevoid Update(){float horizontal = Input.GetAxis("Horizontal");float vertical = Input.GetAxis("Vertical");Vector3 direction = new Vector3 (horizontal,0, vertical);player.SimpleMove(direction);}
}

运行测试

点击运行 按下 wasd 键盘,圆球会按照我们的键移动,同时按下wd 键时,会斜轴走动,读者可以自信测试。使用character control 会使得移动更为简单,如果我们需要其他的移动方式,对一些场景中的物体进行移动,也可以使用transform,如下为测试代码,注意脚本挂载到哪个物体上
在这里插入图片描述

如上图所示,再增加一个立方体,写一个脚本move.cs,挂载到立方体上,脚本如下所示

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class move : MonoBehaviour
{// Start is called before the first frame update[SerializeField] private float moveSpeed = 10.1f;void Start(){}// Update is called once per framevoid Update(){if (Input.GetKeyDown(KeyCode.W)){//transform.position +//transform.position -Vector3 pos = Vector3.up * moveSpeed * Time.deltaTime;Debug.Log(Time.deltaTime);Debug.Log(pos);transform.Translate(Vector3.up * moveSpeed * 0.1f);}else if (Input.GetKeyDown(KeyCode.S)){transform.Translate(Vector3.down * moveSpeed * 0.1f);}else if (Input.GetKeyDown(KeyCode.Z)){transform.position = Vector3.MoveTowards(transform.position, new Vector3(0, 0, 0), moveSpeed);}}
}

运行测试

这样再按键wasd 时,两个物体都会移动,不同的是,立方体是上下移动。当然同时移动可能逻辑上不对,读者可以自行修改,点中哪一个再移动哪一个。

http://www.lryc.cn/news/183744.html

相关文章:

  • 指数分布优化器(EDO)(含MATLAB代码)
  • Java 时间的加减处理
  • 基于A4988/DRV8825的四路步进电机驱动器
  • 万字总结网络原理
  • 【AI视野·今日CV 计算机视觉论文速览 第262期】Fri, 6 Oct 2023
  • 一文搞懂Jenkins持续集成解决的是什么问题
  • 微信小程序去除默认滚动条展示
  • 3.02 创建订单操作详细-订单创建与回滚 (创建订单操作详细)
  • 需求放缓、价格战升级、利润率持续恶化对小鹏汽车造成了严重影响
  • 《算法通关之路》chapter19解题技巧和面试技巧
  • 什么是TF-A项目的长期支持?
  • 【LinuxC】时间、时区,相关命令、函数
  • mac清理垃圾的软件有哪些?这三款我最推荐
  • 复习Day11:链表part04: 206. 反转链表、92. 反转链表II、25. K 个一组翻转链表、148. 排序链表
  • 一年一度的国庆节又结束了
  • 雷达干扰和烧穿范围简介
  • “秋天第一只大闸蟹”背后,看见京东一体化供应链
  • 大模型Java编码能力评估
  • javascript选择框和选择文本的创建与增加以及设置选中项
  • 汽车驾驶任务的隐马尔可夫模型识别方法研究
  • Java编程题(完数)
  • 国庆day6
  • 力扣 -- 873. 最长的斐波那契子序列的长度
  • 【程序员必看】计算机网络,快速了解网络层次、常用协议和物理设备!
  • 1.软件测试基础
  • 综合布线系统概述
  • Labview 实战 99乘法表
  • 需求变化频繁的情况下,如何实施自动化测试
  • C++设计模式-桥接(Bridge)
  • Springboot+vue的开放性实验室管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。