Unity in action multiplatform game development in C#

Unity in Action, Third Edition teaches you to create games with the Unity game platform. It's many 2D, 3D, and AR/VR game examples give you hands-on experience with Unity's workflow tools and state-of-the-art rendering engine. This fully updated third edition presents new coverage of Unity...

Descripción completa

Detalles Bibliográficos
Otros Autores: Hocking, Joseph, 1979- author (author), Schell, Jesse, writer of foreword (writer of foreword)
Formato: Libro electrónico
Idioma:Inglés
Publicado: Shelter Island, New York : Manning Publications Company [2022]
Edición:Third edition
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009645695106719
Tabla de Contenidos:
  • Intro
  • inside front cover
  • Praise for earlier editions of Unity in Action
  • Unity in Action, Third Edition
  • Copyright
  • contents
  • front matter
  • foreword
  • preface
  • acknowledgments
  • about this book
  • Who should read this book
  • How this book is organized: A roadmap
  • About the code
  • liveBook discussion forum
  • about the author
  • about the cover illustration
  • Part 1 First steps
  • 1 Getting to know Unity
  • 1.1 Why is Unity so great?
  • 1.1.1 Unity's strengths and advantages
  • 1.1.2 Downsides to be aware of
  • 1.1.3 Example games built with Unity
  • 1.2 How to use Unity
  • 1.2.1 Scene view, Game view, and the Toolbar
  • 1.2.2 The mouse and keyboard
  • 1.2.3 The Hierarchy view and the Inspector panel
  • 1.2.4 The Project and Console tabs
  • 1.3 Getting up and running with Unity programming
  • 1.3.1 Running code in Unity: Script components
  • 1.3.2 Using Visual Studio, the included IDE
  • 1.3.3 Printing to the console: Hello World!
  • Summary
  • 2 Building a demo that puts you in 3D space
  • 2.1 Before you start . . .
  • 2.1.1 Planning the project
  • 2.1.2 Understanding 3D coordinate space
  • 2.2 Begin the project: Place objects in the scene
  • 2.2.1 The scenery: Floor, outer walls, and inner walls
  • 2.2.2 Lights and cameras
  • 2.2.3 The player's collider and viewpoint
  • 2.3 Make things move: A script that applies transforms
  • 2.3.1 Visualizing how movement is programmed
  • 2.3.2 Writing code to implement the diagram
  • 2.3.3 Understanding local vs. global coordinate space
  • 2.4 Script component for looking around: MouseLook
  • 2.4.1 Horizontal rotation that tracks mouse movement
  • 2.4.2 Vertical rotation with limits
  • 2.4.3 Horizontal and vertical rotation at the same time
  • 2.5 Keyboard input component: First-person controls
  • 2.5.1 Responding to keypresses.
  • 2.5.2 Setting a rate of movement independent of the computer's speed
  • 2.5.3 Moving the CharacterController for collision detection
  • 2.5.4 Adjusting components for walking instead of flying
  • Summary
  • 3 Adding enemies and projectiles to the 3D game
  • 3.1 Shooting via raycasts
  • 3.1.1 What is raycasting?
  • 3.1.2 Using the ScreenPointToRay command for shooting
  • 3.1.3 Adding visual indicators for aiming and hits
  • 3.2 Scripting reactive targets
  • 3.2.1 Determining what was hit
  • 3.2.2 Alerting the target that it was hit
  • 3.3 Basic wandering AI
  • 3.3.1 Diagramming how basic AI works
  • 3.3.2 "Seeing" obstacles with a raycast
  • 3.3.3 Tracking the character's state
  • 3.4 Spawning enemy prefabs
  • 3.4.1 What is a prefab?
  • 3.4.2 Creating the enemy prefab
  • 3.4.3 Instantiating from an invisible SceneController
  • 3.5 Shooting by instantiating objects
  • 3.5.1 Creating the projectile prefab
  • 3.5.2 Shooting the projectile and colliding with a target
  • 3.5.3 Damaging the player
  • Summary
  • 4 Developing graphics for your game
  • 4.1 Understanding art assets
  • 4.2 Building basic 3D scenery: Whiteboxing
  • 4.2.1 Whiteboxing explained
  • 4.2.2 Drawing a floor plan for the level
  • 4.2.3 Laying out primitives according to the plan
  • 4.3 Texturing the scene with 2D images
  • 4.3.1 Choosing a file format
  • 4.3.2 Importing an image file
  • 4.3.3 Applying the image
  • 4.4 Generating sky visuals by using texture images
  • 4.4.1 What is a skybox?
  • 4.4.2 Creating a new skybox material
  • 4.5 Working with custom 3D models
  • 4.5.1 Which file format to choose?
  • 4.5.2 Exporting and importing the model
  • 4.6 Creating effects by using particle systems
  • 4.6.1 Adjusting parameters on the default effect
  • 4.6.2 Applying a new texture for fire
  • 4.6.3 Attaching particle effects to 3D objects
  • Summary
  • Part 2 Getting comfortable.
  • 5 Building a Memory game using Unity's 2D functionality
  • 5.1 Setting up everything for 2D graphics
  • 5.1.1 Preparing the project
  • 5.1.2 Displaying 2D images (aka sprites)
  • 5.1.3 Switching the camera to 2D mode
  • 5.2 Building a card object and making it react to clicks
  • 5.2.1 Building the object out of sprites
  • 5.2.2 Mouse input code
  • 5.2.3 Revealing the card on a click
  • 5.3 Displaying the various card images
  • 5.3.1 Loading images programmatically
  • 5.3.2 Setting the image from an invisible SceneController
  • 5.3.3 Instantiating a grid of cards
  • 5.3.4 Shuffling the cards
  • 5.4 Making and scoring matches
  • 5.4.1 Storing and comparing revealed cards
  • 5.4.2 Hiding mismatched cards
  • 5.4.3 Text display for the score
  • 5.5 Restart button
  • 5.5.1 Programming a UIButton component by using SendMessage
  • 5.5.2 Calling LoadScene from SceneController
  • Summary
  • 6 Creating a basic 2D platformer
  • 6.1 Setting up the graphics
  • 6.1.1 Placing the scenery
  • 6.1.2 Importing sprite sheets
  • 6.2 Moving the player left and right
  • 6.2.1 Writing keyboard controls
  • 6.2.2 Colliding with the block
  • 6.3 Playing the sprite's animation
  • 6.3.1 Explaining the Mecanim animation system
  • 6.3.2 Triggering animations from code
  • 6.4 Adding the ability to jump
  • 6.4.1 Falling from gravity
  • 6.4.2 Applying an upward impulse
  • 6.4.3 Detecting the ground
  • 6.5 Additional features for a platform game
  • 6.5.1 Unusual floors: Slopes and one-way platforms
  • 6.5.2 Implementing moving platforms
  • 6.5.3 Camera control
  • Summary
  • 7 Putting a GUI onto a game
  • 7.1 Before you start writing code . . .
  • 7.1.1 Immediate mode GUI or advanced 2D interface?
  • 7.1.2 Planning the layout
  • 7.1.3 Importing UI images
  • 7.2 Setting up the GUI display
  • 7.2.1 Creating a canvas for the interface
  • 7.2.2 Buttons, images, and text labels.
  • 7.2.3 Controlling the position of UI elements
  • 7.3 Programming interactivity in the UI
  • 7.3.1 Programming an invisible UIController
  • 7.3.2 Creating a pop-up window
  • 7.3.3 Setting values using sliders and input fields
  • 7.4 Updating the game by responding to events
  • 7.4.1 Integrating an event system
  • 7.4.2 Broadcasting and listening for events from the scene
  • 7.4.3 Broadcasting and listening for events from the HUD
  • Summary
  • 8 Creating a third-person 3D game: Player movement and animation
  • 8.1 Adjusting the camera view for third-person
  • 8.1.1 Importing a character to look at
  • 8.1.2 Adding shadows to the scene
  • 8.1.3 Orbiting the camera around the player character
  • 8.2 Programming camera-relative movement controls
  • 8.2.1 Rotating the character to face movement direction
  • 8.2.2 Moving forward in that direction
  • 8.3 Implementing the jump action
  • 8.3.1 Applying vertical speed and acceleration
  • 8.3.2 Modifying the ground detection to handle edges and slopes
  • 8.4 Setting up animations on the player character
  • 8.4.1 Defining animation clips in the imported model
  • 8.4.2 Creating the animator controller for these animations
  • 8.4.3 Writing code that operates the animator
  • Summary
  • 9 Adding interactive devices and items within the game
  • 9.1 Creating doors and other devices
  • 9.1.1 Doors that open and close on a keypress
  • 9.1.2 Checking distance and facing before opening the door
  • 9.1.3 Operating a color-changing monitor
  • 9.2 Interacting with objects by bumping into them
  • 9.2.1 Colliding with physics-enabled obstacles
  • 9.2.2 Operating the door with a trigger object
  • 9.2.3 Collecting items scattered around the level
  • 9.3 Managing inventory data and game state
  • 9.3.1 Setting up player and inventory managers
  • 9.3.2 Programming the game managers.
  • 9.3.3 Storing inventory in a collection object: List vs. Dictionary
  • 9.4 Inventory UI for using and equipping items
  • 9.4.1 Displaying inventory items in the UI
  • 9.4.2 Equipping a key to use on locked doors
  • 9.4.3 Restoring the player's health by consuming health packs
  • Summary
  • Part 3 Strong finish
  • 10 Connecting your game to the internet
  • 10.1 Creating an outdoor scene
  • 10.1.1 Generating sky visuals by using a skybox
  • 10.1.2 Setting up an atmosphere that's controlled by code
  • 10.2 Downloading weather data from an internet service
  • 10.2.1 Requesting HTTP data using coroutines
  • 10.2.2 Parsing XML
  • 10.2.3 Parsing JSON
  • 10.2.4 Affecting the scene based on weather data
  • 10.3 Adding a networked billboard
  • 10.3.1 Loading images from the internet
  • 10.3.2 Displaying images on the billboard
  • 10.3.3 Caching the downloaded image for reuse
  • 10.4 Posting data to a web server
  • 10.4.1 Tracking current weather: Sending post requests
  • 10.4.2 Server-side code in PHP
  • Summary
  • 11 Playing audio: Sound effects and music
  • 11.1 Importing sound effects
  • 11.1.1 Supported file formats
  • 11.1.2 Importing audio files
  • 11.2 Playing sound effects
  • 11.2.1 Explaining what's involved: Audio clip vs. source vs. listener
  • 11.2.2 Assigning a looping sound
  • 11.2.3 Triggering sound effects from code
  • 11.3 Using the audio control interface
  • 11.3.1 Setting up the central AudioManager
  • 11.3.2 Volume control UI
  • 11.3.3 Playing UI sounds
  • 11.4 Adding background music
  • 11.4.1 Playing music loops
  • 11.4.2 Controlling music volume separately
  • 11.4.3 Fading between songs
  • Summary
  • 12 Putting the parts together into a complete game
  • 12.1 Building an action RPG by repurposing projects
  • 12.1.1 Assembling assets and code from multiple projects
  • 12.1.2 Programming point-and-click controls: Movement and devices.
  • 12.1.3 Replacing the old GUI with a new interface.