Unity 玩家触碰地面改变材质:实现玩家触地变色,跳跃恢复原材质
using\u0020System;\nusing\u0020System.Collections;\nusing\u0020System.Collections.Generic;\nusing\u0020UnityEngine;\n\npublic\u0020class\u0020PlayerScript\u0020:\u0020MonoBehaviour\n{\n\u0020\u0020public\u0020Transform\u0020follower;\n\u0020\u0020public\u0020Material\u0020defaultMaterial;\n\u0020\u0020public\u0020Material\u0020contactMaterial;\n\u0020\u0020private\u0020Rigidbody\u0020_playerRigidbody;\n\u0020\u0020private\u0020Vector3\u0020_controlToGoForward\u0020=\u0020new\u0020Vector3(0,\u00200,\u002010);\n\u0020\u0020private\u0020Vector3\u0020_controlToGoLeft\u0020=\u0020new\u0020Vector3(-10,\u00200,\u00200);\n\u0020\u0020private\u0020Vector3\u0020_controlToGoRight\u0020=\u0020new\u0020Vector3(10,\u00200,\u00200);\n\u0020\u0020private\u0020Vector3\u0020_controlToJump\u0020=\u0020new\u0020Vector3(0,\u00205,\u00200);\n\u0020\u0020private\u0020Vector3\u0020_controlToGoBack\u0020=\u0020new\u0020Vector3(0,\u00200,\u0020-10);\n\u0020\u0020private\u0020bool\u0020_isKeySpaceTyped;\n\u0020\u0020private\u0020bool\u0020_isContact;\n\u0020\u0020\n\u0020\u0020private\u0020void\u0020OnCollisionEnter(Collision\u0020collision)\n\u0020\u0020{\n\u0020\u0020\u0020\u0020if\u0020(collision.gameObject.CompareTag("Ground"))\n\u0020\u0020\u0020\u0020{\n\u0020\u0020\u0020\u0020\u0020\u0020_isContact\u0020=\u0020true;\n\u0020\u0020\u0020\u0020\u0020\u0020GetComponent\u003CRenderer\u003E().material\u0020=\u0020contactMaterial;\n\u0020\u0020\u0020\u0020}\n\u0020\u0020}\n\u0020\u0020\n\u0020\u0020private\u0020void\u0020OnCollisionExit(Collision\u0020collision)\n\u0020\u0020{\n\u0020\u0020\u0020\u0020if\u0020(collision.gameObject.CompareTag("Ground"))\n\u0020\u0020\u0020\u0020{\n\u0020\u0020\u0020\u0020\u0020\u0020_isContact\u0020=\u0020false;\n\u0020\u0020\u0020\u0020\u0020\u0020GetComponent\u003CRenderer\u003E().material\u0020=\u0020defaultMaterial;\n\u0020\u0020\u0020\u0020}\n\u0020\u0020}\n\u0020\u0020\n\u0020\u0020void\u0020Start()\n\u0020\u0020{\n\u0020\u0020\u0020\u0020_playerRigidbody\u0020=\u0020GetComponent\u003CRigidbody\u003E();\n\u0020\u0020\u0020\u0020GetComponent\u003CRenderer\u003E().material\u0020=\u0020defaultMaterial;\n\u0020\u0020}\n\u0020\u0020\n\u0020\u0020void\u0020Update()\n\u0020\u0020{\n\u0020\u0020\u0020\u0020bool\u0020isKeyRTyped\u0020=\u0020Input.GetKey(KeyCode.R);\n\u0020\u0020\u0020\u0020bool\u0020isKeyTTyped\u0020=\u0020Input.GetKey(KeyCode.T);\n\u0020\u0020\u0020\u0020bool\u0020isKeyWTyped\u0020=\u0020Input.GetKey(KeyCode.W);\n\u0020\u0020\u0020\u0020bool\u0020isKeyATyped\u0020=\u0020Input.GetKey(KeyCode.A);\n\u0020\u0020\u0020\u0020bool\u0020isKeySTyped\u0020=\u0020Input.GetKey(KeyCode.S);\n\u0020\u0020\u0020\u0020bool\u0020isKeyDTyped\u0020=\u0020Input.GetKey(KeyCode.D);\n\u0020\u0020\u0020\u0020bool\u0020isKeyShiftTyped\u0020=\u0020Input.GetKey(KeyCode.LeftShift);\n\u0020\u0020\u0020\u0020float\u0020mouseMoveX\u0020=\u0020Input.GetAxis("Mouse\u0020X");\n\u0020\u0020\u0020\u0020float\u0020mouseMoveY\u0020=\u0020Input.GetAxis("Mouse\u0020Y");\n\u0020\u0020\u0020\u0020float\u0020mouseCausedMovedPara\u0020=\u00205;\n\u0020\u0020\u0020\u0020_isKeySpaceTyped\u0020=\u0020Input.GetKey(KeyCode.Space);\n\u0020\u0020\n\u0020\u0020\u0020\u0020if\u0020(isKeyWTyped)\n\u0020\u0020\u0020\u0020{\n\u0020\u0020\u0020\u0020\u0020\u0020_playerRigidbody.AddForce(_controlToGoForward);\n\u0020\u0020\u0020\u0020}\n\u0020\u0020\u0020\u0020\n\u0020\u0020\u0020\u0020if\u0020(isKeyATyped)\n\u0020\u0020\u0020\u0020{\n\u0020\u0020\u0020\u0020\u0020\u0020_playerRigidbody.AddForce(_controlToGoLeft);\n\u0020\u0020\u0020\u0020}\n\u0020\u0020\u0020\u0020\n\u0020\u0020\u0020\u0020if\u0020(isKeySTyped)\n\u0020\u0020\u0020\u0020{\n\u0020\u0020\u0020\u0020\u0020\u0020_playerRigidbody.AddForce(_controlToGoBack);\n\u0020\u0020\u0020\u0020}\n\u0020\u0020\u0020\u0020\n\u0020\u0020\u0020\u0020if\u0020(isKeyDTyped)\n\u0020\u0020\u0020\u0020{\n\u0020\u0020\u0020\u0020\u0020\u0020_playerRigidbody.AddForce(_controlToGoRight);\n\u0020\u0020\u0020\u0020}\n\u0020\u0020\u0020\u0020\n\u0020\u0020\u0020\u0020if\u0020(_isKeySpaceTyped\u0020&&\u0020_isContact)\n\u0020\u0020\u0020\u0020{\n\u0020\u0020\u0020\u0020\u0020\u0020_playerRigidbody.AddForce(_controlToJump);\n\u0020\u0020\u0020\u0020\u0020\u0020_isContact\u0020=\u0020false;\n\u0020\u0020\u0020\u0020\u0020\u0020GetComponent\u003CRenderer\u003E().material\u0020=\u0020defaultMaterial;\n\u0020\u0020\u0020\u0020}\n\u0020\u0020\u0020\u0020\n\u0020\u0020\u0020\u0020if\u0020(isKeyRTyped)\n\u0020\u0020\u0020\u0020{\n\u0020\u0020\u0020\u0020\u0020\u0020transform.position\u0020=\u0020new\u0020Vector3(-20,\u002068,\u0020-30);\n\u0020\u0020\u0020\u0020}\n\u0020\u0020\n\u0020\u0020\u0020\u0020follower.Rotate(-mouseMoveY\u0020*\u0020mouseCausedMovedPara,\u0020mouseMoveX\u0020*\u0020mouseCausedMovedPara,\u00200);\n\u0020\u0020\u0020\u0020\n\u0020\u0020\u0020\u0020if\u0020(isKeyTTyped)\n\u0020\u0020\u0020\u0020{\n\u0020\u0020\u0020\u0020\u0020\u0020follower.Rotate(-follower.rotation.x,\u0020-follower.rotation.y\u0020+\u00201,\u0020-follower.rotation.z);\n\u0020\u0020\u0020\u0020}\n\u0020\u0020\n\u0020\u0020\u0020\u0020\n\u0020\u0020}\n\u0020\u0020\n\u0020\u0020\n}\n
原文地址: https://www.cveoy.top/t/topic/pyst 著作权归作者所有。请勿转载和采集!