Surface: Difference between revisions
(wall hitbox stuff) |
|||
Line 1: | Line 1: | ||
{{stub}} | {{stub}} | ||
A '''surface''' or '''triangle''' in Super Mario 64 is a piece of geometry that exerts some kind of force or effect on Mario. Every triangle falls into one of three categories: a floor triangle, a wall triangle, or a ceiling triangle. However, a triangle does not store what category it is. Instead, its category is determined based on the y component of the triangle's [[wikipedia:normal vector|normal vector]]. If y component > 0.01, then it is a floor. If y component < -0.01, then it is a ceiling. Otherwise, it is a wall | A '''surface''' or '''triangle''' in Super Mario 64 is a piece of geometry that exerts some kind of force or effect on Mario. Every triangle falls into one of three categories: a floor triangle, a wall triangle, or a ceiling triangle. However, a triangle does not store what category it is. Instead, its category is determined based on the y component of the triangle's [[wikipedia:normal vector|normal vector]]<ref>https://www.youtube.com/watch?v=UnU7DJXiMAQ</ref>. If y component > 0.01, then it is a floor. If y component < -0.01, then it is a ceiling. Otherwise, it is a wall. | ||
==Walls== | ==Walls== | ||
A triangle is a wall triangle if and only if -0.01 < normal.y < 0.01. | |||
===Hitbox=== | |||
[[File:wall hitbox.png|300px|right|thumb|The hitbox of a wall during both the initial handle and a ground quarter step, simplified]][[File:wall hitbox air.png|300px|right|thumb|The hitbox of a wall during an air quarter step, simplified]][[File:wall hitbox water.png|300px|right|thumb|The hitbox of a wall in the water, including both the inital handle and the single frame movement, simplified]] | |||
All wall hitboxes are handled once per [[frame]] and once per [[Quarter Step|quarter step]] of Mario's movement. Most of the time, a wall has two separate hitboxes handled one after the other within a frame or quarter step. | |||
* A wall hitbox's initial frame handle has a hitbox extending 50 [[unit]]s forward and 50 units backward, offset down 60, and then a hitbox extending 24 units in each direction offset down 30. | |||
* A quarter step of ground movement has a hitbox extending 24 [[unit]]s forward and 24 units backward, offset down 30, and then a hitbox extending 50 units in each direction offset down 60. This is the opposite order from the initial handle, but the outcome is the same. | |||
* A quarter step of air movement gives the wall a hitbox of 50 units in each direction offset down 150, and then a hitbox of 50 units offset down 30. | |||
* Water movement does not implement quarter steps. After one frame of water movement, a wall hitbox extends 110 units in each direction, offset down 10. Since both the water handle and the initial handle both happen once per frame, the hitboxes can be overlaid. | |||
===Non-vertical walls=== | |||
[[File:Non-Vertical Wall.png|300px|right|thumb|This wall in [[BoB]] is not quite vertical.]] The majority of walls in the game are perfectly vertical, but not all. Walls that are not vertical are one cause of [[Glitchy Ledge Grab]]s. | [[File:Non-Vertical Wall.png|300px|right|thumb|This wall in [[BoB]] is not quite vertical.]] The majority of walls in the game are perfectly vertical, but not all. Walls that are not vertical are one cause of [[Glitchy Ledge Grab]]s. | ||
==Floors== | ==Floors== | ||
==Ceilings== | ==Ceilings== | ||
==References== | ==References== | ||
<references /> | <references /> |
Revision as of 20:18, 1 December 2018
A surface or triangle in Super Mario 64 is a piece of geometry that exerts some kind of force or effect on Mario. Every triangle falls into one of three categories: a floor triangle, a wall triangle, or a ceiling triangle. However, a triangle does not store what category it is. Instead, its category is determined based on the y component of the triangle's normal vector[1]. If y component > 0.01, then it is a floor. If y component < -0.01, then it is a ceiling. Otherwise, it is a wall.
Walls
A triangle is a wall triangle if and only if -0.01 < normal.y < 0.01.
Hitbox
All wall hitboxes are handled once per frame and once per quarter step of Mario's movement. Most of the time, a wall has two separate hitboxes handled one after the other within a frame or quarter step.
- A wall hitbox's initial frame handle has a hitbox extending 50 units forward and 50 units backward, offset down 60, and then a hitbox extending 24 units in each direction offset down 30.
- A quarter step of ground movement has a hitbox extending 24 units forward and 24 units backward, offset down 30, and then a hitbox extending 50 units in each direction offset down 60. This is the opposite order from the initial handle, but the outcome is the same.
- A quarter step of air movement gives the wall a hitbox of 50 units in each direction offset down 150, and then a hitbox of 50 units offset down 30.
- Water movement does not implement quarter steps. After one frame of water movement, a wall hitbox extends 110 units in each direction, offset down 10. Since both the water handle and the initial handle both happen once per frame, the hitboxes can be overlaid.
Non-vertical walls
The majority of walls in the game are perfectly vertical, but not all. Walls that are not vertical are one cause of Glitchy Ledge Grabs.